Горячая клавиша «c» вызывает конфликт черновиков при создании новой темы со страницы темы

Мне удалось воспроизвести конфликт черновиков на meta.discourse.org при создании двух черновиков новых тем с использованием стандартного горячего клавиша c при просмотре существующей темы.

Шаги для воспроизведения

  1. Откройте существующую публичную тему.
  2. Нажмите c, чтобы создать новую тему.
  3. Введите заголовок и текст.
  4. Дождитесь сохранения черновика, затем нажмите кнопку Сохранить и закрыть (X) в композере.
  5. По-прежнему находясь на странице просмотра существующей темы, снова нажмите c, чтобы создать ещё одну новую тему.
  6. Введите другой заголовок.
  7. Нажмите Tab, чтобы перейти от поля заголовка к полю текста сообщения, и дождитесь автосохранения.

Для воспроизведения, которое я подтвердил на Meta, оба композера новых тем должны быть открыты во время просмотра существующей темы.

Фактический результат

Появляется предупреждение о том, что черновик редактируется в другом окне, и предлагается перезагрузить страницу.

Это происходит без редактирования черновика в другом окне.

На моём собственном сайте неудачный запрос автосохранения на /drafts.json возвращает HTTP 409.

Ожидаемый результат

Вторая новая тема должна получить собственный черновик, сохраняя первый сохранённый черновик без конфликта.

Где я воспроизвёл проблему

  • На meta.discourse.org, выполнив шаги, описанные выше.
  • На моём собственном сайте в безопасном режиме, с отключёнными темами и всеми клиентскими кастомизациями плагинов.
  • Мой сайт работает на Discourse 2026.10.0-latest, коммит b28f2a44c.

Возможная причина

Анализ кода показывает, что fallback в KeyboardShortcuts#createTopic по-прежнему использует фиксированный Composer.NEW_TOPIC_KEY (new_topic) и не передаёт draftSequence:

https://github.com/discourse/discourse/blob/ec4cea91ea81d926cedab5f0d61c9313f42aba24/frontend/discourse/app/services/keyboard-shortcuts.js#L565-L569

Для сравнения, composer.openNewTopic() генерирует уникальный ключ черновика.

В воспроизведении, зафиксированном на моём сайте, первый черновик был сохранён под ключом new_topic и достиг последовательности 1. Второй композер попытался сохранить черновик под тем же ключом без указания последовательности, что привело к HTTP 409 и появлению предупреждения.

Можно ли использовать в этом fallback метод composer.openNewTopic(), чтобы каждая новая тема получала отдельный черновик?

С уважением,
Prof. Caju