Il conteggio non letti mostra Non letti (14) ma /unread è vuoto

In questa bella mattina di giovedì, vi presento un interessante dilemma. Sto notando quello che sembra essere un contatore di non letti con un falso positivo sul mio sito.

Cosa succede

La barra di navigazione superiore mostra Non letti (14). Ma quando ci clicco e vado su /unread, non ci sono argomenti non letti elencati. La pagina dice che non ci sono più elementi non letti.

Anche altri utenti non appartenenti allo staff riscontrano lo stesso problema, sebbene con conteggi di non letti diversi.

Nell’app Discourse su iOS, vedo anch’io un conteggio di non letti quando non ci sono argomenti non letti, a volte con un numero diverso.

  • Piattaforma: web desktop e app Discourse su iOS
  • Coinvolge: più utenti
  • Sito: eurth.org

Cosa ho testato

Ho effettuato dei test in Modalità Sicura:

  • https://eurth.org/?safe_mode=no_themes,no_plugins
  • https://eurth.org/unread?safe_mode=no_themes,no_plugins

Il problema si verifica anche lì, quindi non sembra essere causato da temi o personalizzazioni dei plugin lato client. Non ci sono sussurri in nessun argomento, quindi probabilmente non è nemmeno quello.

Inoltre, non posso usare Ignora, perché non c’è nessun pulsante Ignora su /unread quando l’elenco dei non letti è vuoto.

Comportamento atteso

Se la barra di navigazione indica Non letti (14), dovrei vedere 14 argomenti non letti su /unread, o almeno alcuni argomenti non letti visibili.

Comportamento effettivo

  • la barra di navigazione indica Non letti (14)
  • /unread è vuoto
  • non è disponibile alcun pulsante Ignora
  • il problema persiste in Modalità Sicura

Domande

  • Esiste un modo noto per ricostruire/reimpostare lo stato dei non letti per un singolo utente?
  • Esiste un’incongruenza lato server che può causare la persistenza dei conteggi dei non letti anche quando /unread è vuoto?

In precedenza, ho chiesto all’AI su ask.discourse.org riguardo a questo problema, e alla fine mi ha consigliato di pubblicare un rapporto di bug qui.

1 Mi Piace

Ah, i fantasma dei messaggi non letti hanno colpito il tuo sito!

Hai modificato recentemente le autorizzazioni di qualche categoria o spostato alcuni argomenti in una categoria sicura? Qualcosa ha modificato lo stato di tracciamento.

Non vorresti reimpostarlo per tutti gli utenti se anche altri stanno riscontrando lo stesso problema?

Penso che si possa risolvere per tutti tramite la console di Rails, ma è un po’ complicato e devo prima capire come fare e testarlo. Al momento sono da mobile, ma proverò a pubblicare una soluzione tra un attimo se nessuno altro lo fa prima di me.

2 Mi Piace

Ciao,

Siamo a conoscenza di questo bug e stiamo cercando di risolverlo. Siamo tutti infastiditi da ciò :wink:

3 Mi Piace

Sì. In privato il nostro staff ha lavorato su una categoria simile a Documentation, che è stata resa pubblica di recente una volta completata.

Sì, assolutamente. La mia idea era di testarlo prima su me stesso e poi risolvere il problema per tutti. Dato che si tratta di un bug molto complesso da testare (almeno per me), non volevo creare false aspettative a tutti prima di avere una soluzione funzionante.

Grazie per la fiducia. Questa mattina ho notato il rilascio mensile di maggio 2026 v2026.05 e ho pensato che potesse risolvere il problema, ma persiste ancora. Sono certo che il Team ci stia lavorando. Discourse è fantastico.

Oh, cielo. :flushed_face: Ammetto di aver letto tutti i report relativi a bug. Per un attimo ho persino pensato di nascondere semplicemente la scheda «Non letti» dalla navigazione e ignorarla. Ma questo non risolverebbe nulla, vero? Sembra che mi stia seguendo persino qui su Meta.

Screenshot 2026-05-28 at 13.52.18

1 Mi Piace

ok, questo script di Rails agirà come un “segna tutto come letto” globale e forzerà il conteggio dei non letti a 0 per tutti gli utenti, quindi purtroppo cancellerà qualsiasi conteggio legittimo di non letti oltre a eventuali non letti fantasma. Possiamo farlo con un comando SQL in Rails. Ma nota che non risolve il bug alla radice. Inoltre, è una buona idea se hai un backup recente a portata di mano, ma l’ho testato sul mio forum di sviluppo e ha funzionato.

cd /var/discourse
./launcher enter app
rails c

incolla l’intero blocco seguente e premi invio

sql = <<~SQL
  UPDATE topic_users
  SET last_read_post_number = topics.highest_post_number
  FROM topics
  WHERE topics.id = topic_users.topic_id
    AND COALESCE(topic_users.last_read_post_number, 0) < topics.highest_post_number
    AND topic_users.notification_level IN (2, 3, 4) -- Tracking, Watching, Watching First Post
SQL

# esegui l'aggiornamento
result = ActiveRecord::Base.connection.execute(sql)
puts "Puliti con successo #{result.cmd_tuples} argomenti non letti a livello di sito."

# forza i browser client a eliminare il loro stato memorizzato nella cache e sincronizzarsi con il database
MessageBus.publish("/topic-tracking-state", { clear: true })

Gli utenti potrebbero dover eseguire un aggiornamento forzato per vedere lo stato dei «non letti» cancellato.