Ich kann einen Draft-Konflikt auf meta.discourse.org reproduzieren, wenn ich zwei neue Themen-Entwürfe erstelle, indem ich die native Tastenkürzel c nutze, während ich ein bestehendes Thema anschaue.
Schritte zur Reproduktion
- Öffne ein bestehendes öffentliches Thema.
- Drücke
c, um ein neues Thema zu erstellen. - Gib einen Titel und einen Text ein.
- Warte, bis der Entwurf gespeichert ist, und klicke dann auf die Schaltfläche Speichern und schließen (X) des Compositors.
- Drücke
cerneut, um ein weiteres neues Thema zu erstellen, während du weiterhin ein bestehendes Thema anschaust. - Gib einen anderen Titel ein.
- Drücke Tab, um vom Titelfeld zum Nachrichtentext zu wechseln, und warte auf das automatische Speichern.
Beide Compositors für neue Themen müssen geöffnet werden, während ein bestehendes Thema angezeigt wird, damit die Reproduktion, die ich auf Meta bestätigt habe, funktioniert.
Tatsächliches Ergebnis
Es erscheint eine Warnung, dass der Entwurf in einem anderen Fenster bearbeitet wird, und ich werde aufgefordert, die Seite neu zu laden.
Dies geschieht, ohne dass der Entwurf in einem anderen Fenster bearbeitet wird.
Auf meiner eigenen Website liefert die fehlgeschlagene automatische Speichern-Anfrage an /drafts.json den HTTP-Status 409 zurück.
Erwartetes Ergebnis
Das zweite neue Thema sollte seinen eigenen Entwurf erhalten und den ersten gespeicherten Entwurf ohne Konflikt beibehalten.
Wo ich es reproduziert habe
- Auf meta.discourse.org, indem ich die oben genannten Schritte befolgt habe.
- Auf meiner eigenen Website im Safe Mode, mit deaktivierten Themes und allen clientseitigen Plugin-Anpassungen.
- Meine Website läuft mit Discourse
2026.10.0-latest, Commitb28f2a44c.
Mögliche Ursache
Die Code-Inspektion legt nahe, dass der Fallback in KeyboardShortcuts#createTopic weiterhin den festen Composer.NEW_TOPIC_KEY (new_topic) verwendet und kein draftSequence bereitstellt:
Zum Vergleich generiert composer.openNewTopic() einen eindeutigen Entwurfschlüssel.
In der auf meiner Website aufgenommenen Reproduktion wurde der erste Entwurf unter new_topic gespeichert und erreichte die Sequenz 1. Der zweite Composer versuchte, unter demselben Schlüssel ohne Sequenz zu speichern, was zu HTTP 409 und der Warnung führte.
Könnte dieser Fallback composer.openNewTopic() verwenden, damit jedes neue Thema einen separaten Entwurf erhält?
Mit freundlichen Grüßen,
Prof. Caju