Minimum_discourse_version не проходит проверку в сборках -latest (например, 2026.8.0-latest.1)

Темы и компоненты в канале latest по умолчанию автоматически отключаются, а авторам тем приходится использовать неудобные обходные решения.

Я столкнулся с этим здесь: Featured Topics - #76 by cogdog. Довольно неинтуитивно, что все минимальные версии должны использовать формат вроде xxx.x.999, меньший, чем текущая версия, с которой они должны соответствовать.

Платформа

  • Самостоятельно размещённый Discourse в ветке latest
  • Версия Discourse: 2026.8.0-latest.1
  • Затрагивает: создание тем и компонентов тем (метаданные about.json) и проверки совместимости тем

Описание

Фактический результат:
Тема с указанием "minimum_discourse_version": "2026.8.0" в файле about.json считается несовместимой и автоматически отключается, если сайт работает на сборке -latest версии 2026.8.0-latest.1. Единственный способ сохранить тему включённой — установить более низкую версию, например "minimum_discourse_version": "2026.7.999".

Похожая проблема возникает при импорте темы, которая устанавливает minimum_discourse_version в значение в стиле -latest (например, 2025.12.0-latest), которое отклоняется как недействительное — см. существующий отчёт: 主题配置文件中minimum_discourse_version不支持日期化版本格式

Ожидаемый результат:
Поскольку 2026.8.0-latest.1 является сборкой -latest для линии релизов 2026.8.0, она должна удовлетворять минимальному требованию 2026.8.0. Сборки latest новее соответствующей выпущенной версии, а не старше.

Но версия -latest — это версия, предшествующая выпуску данной версии. Именно на этом основывались записи о совместимости на протяжении многих лет.

То, как вы обходили это с помощью <2026.7.999, кажется неочевидным, но почему бы вам не указать <2026.8.0-latest?

Если мне нужен конкретный коммит, добавленный в процессе разработки 2026.8, я могу быть уверен, что все, кто использует релиз 2026.8, его имеют, но я не могу быть уверен, что все, кто использует 2026.8-latest, его имеют. Возможно, их последнее обновление произошло до того, как был добавлен этот конкретный коммит. Так что, если бы 2026.8 по умолчанию включала 2026.8-latest, некоторые вещи могли бы сломаться. Мне кажется, лучше, чтобы администратору пришлось подождать несколько недель, прежде чем он сможет использовать/обновить тему, чем рисковать тем, что что-то сломается из-за отсутствия необходимого коммита.

4 лайка

Да, это верно — 2026.8.0-latest является более низкой версией, чем 2026.8.0. Это можно проверить с помощью парсера Semver. Например, в Ruby:

irb(main):001> Gem::Version.new("2026.8.0-latest") < Gem::Version.new("2026.8.0")
=> true

Нам следует это исправить. Авторам тем должно быть разрешено использовать:

minimumDiscourseVersion: "2026.8.0-latest"

Хотя, как отметил @moin, это может быть рискованно, поскольку -latest ссылается на огромное количество разных коммитов. Поэтому в идеальном мире нам следует подождать до следующего релиза, прежде чем полагаться на новую функцию ядра из темы/плагина.

2 лайка

Мне кажется, это немного сложно для понимания, и мне приходится использовать подход с x.999 и в файле совместимости. Например, сейчас в моей компоненте это выглядит так:

2026.7.999: 93b5b22
2026.4.999: 0321b6d

Потому что, судя по всему, новая функция появилась в 2026.5.0, и чтобы соответствовать ей, мне нужно указать 2026.4.999?

1 лайк

Я недавно этим не пользовался, но примеры от команды Discourse обычно использовали не предыдущий релиз с .999, а текущую версию с суффиксом -latest.

1 лайк

Раньше да, поэтому некоторые старые темы и плагины до сих пор делают это (и, наверное, люди и боты продолжают копировать устаревший шаблон).

Но теперь вы можете использовать индикаторы < или > слева в файле совместимости. Так что вы можете сделать так:

<2026.7.0-latest: 93b5b22

Кроме того, в наши дни мы стараемся избегать использования файла совместимости для каких-либо целей. Вместо этого мы полагаемся на автоматические ветки d-compat/*, которые обеспечивают совместимость с предыдущими версиями.

Документация по обоим старым и новым шаблонам находится здесь:

2 лайка
4 лайка

Эта тема была автоматически закрыта после 44 часов. Новые ответы более не допускаются.