Ungelesene-Anzeige zeigt „Ungelesen (14)“, aber /unread ist leer

An diesem schönen Donnerstagmorgen bringe ich ein interessantes Rätsel vor euch. Ich sehe einen scheinbar falsch positiven Zähler für ungelesene Beiträge auf meiner Seite.

Was passiert

Die obere Navigation zeigt Ungelesen (14). Wenn ich jedoch darauf klicke und zu /unread gehe, werden keine ungelesenen Themen aufgelistet. Die Seite besagt, dass nichts mehr ungelesen ist.

Auch andere Nicht-Mitarbeiter sehen dasselbe Problem, wenn auch mit unterschiedlichen Zählwerten für ungelesene Beiträge.

In der Discourse-App auf iOS sehe ich ebenfalls einen Zähler für ungelesene Beiträge, obwohl keine ungelesenen Themen vorhanden sind, wiederum manchmal mit einer anderen Zahl.

  • Plattform: Desktop-Web und Discourse-App auf iOS
  • Betroffen: mehrere Benutzer
  • Seite: eurth.org

Was ich getestet habe

Ich habe im abgesicherten Modus getestet:

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

Das Problem tritt dort weiterhin auf, sodass es nicht durch Themes oder clientseitige Plugin-Anpassungen verursacht zu sein scheint. Es gibt keine „Flüstern“ in keinem Thema, also ist das wahrscheinlich auch nicht die Ursache.

Ich kann auch Verwerfen nicht verwenden, da auf /unread keine Verwerfen-Schaltfläche vorhanden ist, wenn die Liste der ungelesenen Beiträge leer ist.

Erwartetes Verhalten

Wenn die Navigation Ungelesen (14) anzeigt, sollte ich 14 ungelesene Themen auf /unread sehen oder zumindest einige sichtbare ungelesene Themen.

Tatsächliches Verhalten

  • Navigation zeigt Ungelesen (14)
  • /unread ist leer
  • Keine Verwerfen-Schaltfläche verfügbar
  • Das Problem besteht im abgesicherten Modus weiterhin

Fragen

  • Gibt es eine bekannte Möglichkeit, den Zustand der ungelesenen Beiträge für einen Benutzer neu aufzubauen/zurückzusetzen?
  • Gibt es eine serverseitige Inkonsistenz, die dazu führen kann, dass Zähler für ungelesene Beiträge bestehen bleiben, obwohl /unread leer ist?

Zuvor habe ich die KI auf ask.discourse.org bezüglich dieses Problems gefragt, und am Ende riet sie mir, einen Fehlerbericht hier zu veröffentlichen.

1 „Gefällt mir“

Ah, die Phantom-Ungelesenen haben deine Seite erwischt!

Hast du kürzlich Kategorienberechtigungen geändert oder einige Themen in eine sichere Kategorie verschoben? Etwas hat den Tracking-Zustand verändert.

wolltest du ihn nicht für alle Benutzer zurücksetzen, wenn andere das gleiche Problem haben?

Ich denke, das kann für alle über die Rails-Konsole behoben werden, aber es ist etwas knifflig. Ich muss es erst herausfinden und testen. Ich bin gerade mobil unterwegs, aber ich werde versuchen, in Kürze eine Lösung zu posten, falls niemand anderes etwas findet.

2 „Gefällt mir“

Hallo,

uns ist dieser Fehler bekannt, und wir arbeiten an einer Lösung. Wir sind alle genauso genervt davon :wink:

3 „Gefällt mir“

Ja. Im privaten Rahmen hat unser Team an einer Kategorie gearbeitet, die Documentation ähnelt, und diese wurde kürzlich, nachdem sie fertiggestellt war, öffentlich gemacht.

Ja, ja, genau. Mein Plan war es, es zunächst selbst zu testen und dann für alle zu beheben. Da es sich um einen so komplexen Fehler handelt, den man testen muss (zumindest für mich), wollte ich nicht, dass alle Hoffnungen hegen, bevor es eine funktionierende Lösung gibt.

Danke für das Vertrauen. Heute Morgen habe ich den Monatsrelease von Mai 2026 v2026.05 bemerkt und dachte, er könnte das Problem beheben, aber es besteht weiterhin. Ich bin sicher, dass das Team daran arbeitet. Discourse ist großartig.

Oh, je. :flushed_face: Zugestanden, ich habe mich durch alle relevanten #bug-Berichte gearbeitet. Für einen Moment habe ich sogar erwogen, einfach den „Ungelesene“-Tab aus der Navigation auszublenden und ihn einfach zu ignorieren. Aber das wird nichts lösen, oder? Es sieht so aus, als würde es mir sogar hier auf Meta überallhin folgen.

Screenshot 2026-05-28 um 13.52.18

1 „Gefällt mir“

Ok, dieses Rails-Skript fungiert als globales „Alle als gelesen markieren“ und setzt die Anzahl der ungelesenen Beiträge für alle Benutzer wieder auf 0. Leider werden dadurch auch alle legitimen ungelesenen Beiträge gelöscht, nicht nur die phantomhaften. Dies lässt sich mit einem SQL-Befehl in Rails umsetzen. Beachten Sie jedoch, dass dies den zugrunde liegenden Fehler nicht behebt. Eine gute Idee wäre zudem, falls Sie ein aktuelles Backup zur Hand haben. Ich habe dies jedoch auf meinem Entwicklungsforum getestet, und es hat funktioniert.

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

Fügen Sie den gesamten folgenden Block ein und drücken Sie Enter.

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

# Update ausführen
result = ActiveRecord::Base.connection.execute(sql)
puts "Erfolgreich #{result.cmd_tuples} ungelesene Themen auf der gesamten Seite gelöscht."

# Erzwingen, dass Client-Browser ihren zwischengespeicherten Zustand verwerfen und mit der Datenbank synchronisieren
MessageBus.publish("/topic-tracking-state", { clear: true })

Benutzer müssen möglicherweise einen Hard-Refresh durchführen, um den gelöschten Zustand der ungelesenen Beiträge zu sehen.