Прежде всего, поздравляю команду Discourse с выходом новой версии ESR и спасибо за проделанную работу. Шесть месяцев релизов, собранных в одной поддерживаемой версии — это ОЧЕНЬ много инженерной работы, и тот факт, что теперь есть отдельный сайт релизов и журнал изменений для изучения, сделал это исследование намного проще, чем за предыдущие 4 года.
Я использую 2026.1.5 ESR. Я проходил через релиз за релизом, прежде чем попытаться найти конфигурацию, при которой обновления проходят максимально гладко.
Я изучил всё, что было между 2026.1.5 и 2026.7.0, прежде чем что-либо трогать, и решил, что эти заметки будут полезны всем, кто сейчас находится на версии 2026.1 и пытается решить: патчить сейчас или переходить на новую версию?
Сегодня я обновился до 2026.1.6 ради исправлений безопасности, а на 2026.7.0 перейду в первую неделю следующего месяца, когда у меня будет время правильно протестировать компоненты моей темы и другие вещи.
Подвох с version: stable
Если, как и у меня, в вашем app.yml написано:
version: stable
…то при следующем пересборке вы окажетесь на версии 2026.7.0, хотите вы этого или нет. stable — это псевдоним обратной совместимости для esr, а esr всегда указывает на последнюю версию ESR, которая изменилась сегодня.
Насколько мне известно, пути отката нет, поэтому если вы пересоберете систему просто ради получения исправления безопасности, вы получите и полный скачок на шесть месяцев вперед!
Чтобы остаться на версии 2026.1 и получать только исправления безопасности, явно зафиксируйте версию:
version: release/2026.1
Чтобы перейти на новую версию ESR и не быть автоматически переведенным на следующую через шесть месяцев:
version: release/2026.7
Версия 2026.1 поддерживается до сентября 2026 года. Версия 2026.7 поддерживается до марта 2027 года. Так что переход неизбежен, вопрос лишь в том, произойдет ли он по вашему графику.
Предварительные требования
PostgreSQL 15 теперь является минимальной версией. Проверьте свою версию изнутри контейнера:
cat /shared/postgres_data/PG_VERSION
У меня вернулось значение 15, так что я в порядке. Если вы используете версии 13 или 14, я считаю, что это отдельное обновление, которое нужно выполнить перед переходом на новую версию.
Стоит отметить: образ контейнера теперь поставляется с PG 18 наряду с PG 15, но я пока отказываюсь от него, меняя по одной переменной за раз.
Простои?
Сначала сделайте резервную копию и заблокируйте форумы, включив режим обслуживания.
Простои отсутствуют, но они не мгновенны на зрелом форуме:
Пересборка заняла < 5 минут на моем VPS, планируйте ~10 минут на большинстве хостингов, но это также сильно зависит от количества сообщений на вашем форуме, поэтому планируйте окно в 30–45 минут.
Безопасность: чему вы подвержены на версии 2026.1.5
17 бюллетеней применимы, если вы находитесь на версии 2026.1.5. Всё, что было опубликовано до 30 июня, уже было исправлено в вашей сборке. Все 17 уязвимостей исправлены как в 2026.1.6, так и в 2026.7.0, что делает вариант “сначала патч” вполне жизнеспособным.
- 1 критическая — отравление кэша / XSS через куки цветовой схемы
- 2 высокие — удаленное выполнение кода (RCE) через некорректный файл HEIF; сохраненный XSS через несанитизированное имя пользователя в чате в редакторе текста
- 13 средних, 1 низкая — сохраненный XSS в очереди проверки, журналах действий персонала, действиях с сообщениями и локальных датах; утечка скрытых названий и описаний тегов; раскрытие заголовков ограниченных тем через канонические URL; утечка заголовка/отрывка общих черновиков; обход черного списка доменов для onebox через регистрозависимое сравнение; прослушивание разговоров с ИИ-ботами; доступ к содержимому личных сообщений через материалы для проверки ИИ; несоответствие ID канала/потока в onebox чата; скрытый отрывок первого сообщения, выводимый в JSON-LD для вопросов и ответов
Если вы обновляетесь только патчем, release/2026.1 + пересборка закрывает все эти уязвимости.
Моя боль: вещи, которые изменятся без вашего запроса
Это раздел, который я больше всего хотел видеть в последние несколько лет. При переходе на 2026.7 вот некоторые изменения поведения, которые приходят сами по себе:
-
Реакции Discourse включены по умолчанию для всех сайтов. Развертывание достигло версии
stable21 июля. Если вы не используете Реакции сегодня, они скоро появятся. -
Категория “Некатегоризированные” удаляется. Три настройки скрываются в админке (
allow_uncategorized_topics,suppress_uncategorized_badge,uncategorized_category_id) и будут полностью удалены, как только изменение станет постоянным. Пока что это опция отключения. -
Настройка сайта
rich_editorудалена. Богатый редактор теперь является безусловным. Единственный оставшийся способ выбора между Markdown и богатым текстом — это пользовательская настройкаcomposition_mode. Переключатель предварительного просмотра Markdown также был удален — его заменил переключатель режимов MD/RTE. -
Более простые темы email. Сейчас в бета-тесте. Внимание: включение этой функции перезаписывает вашу настройку сайта
email_subject, а отключение возвращает значение по умолчанию. Так что любые ваши кастомизации там могут быть потеряны. Проверьте эту настройку, прежде чем переключать что-либо. -
Карточки тем с высоким контекстом Horizon достигли версии
stableв июне. Актуально только, если вы используете Horizon, и есть настройка темы для возврата к простым карточкам.
Хорошая новость: все эти изменения теперь приходят через систему “Предстоящие изменения”, что означает, что их нет в версии 2026.1.5. Вы получаете страницу конфигурации, предварительное уведомление, возможность отключения для каждого изменения и исправление (#39279), которое специально предотвращает перезапись настройки, которую вы уже кастомизировали.
Если, как и я, вы были разочарованы перемещением настроек между релизами, эта система — ответ, и оставление на версии 2026.1 сохраняет вас на сборке, предшествующей этой системе. Первое, что я сделаю после перехода, — это пройду по “Предстоящим изменениям” и намеренно установлю каждый ожидающий элемент, прежде чем что-то будет продвинуто автоматически.
Если вы используете кастомные темы или компоненты
Здесь я ожидаю провести больше всего времени на тестирование, и часть причины, почему я не перехожу сегодня:
- Предупреждения администратора теперь включены для всех ожидающих устареваний. Ожидайте, что ваши кастомные компоненты начнут показывать уведомления администратора, если они используют что-то устаревшее. Лучше знать, но это требует ревизии.
- Новые устаревания для расширений файлов
.hbsи.js.es6. Проверьте именование файлов в ваших компонентах. - Устаревшие shim-ы виджетов удалены, вместе с путями устаревания для
discourse.breadcrumbs.*,add-flag-property,add-header-panelиbootbox. - Выходы плагинов теперь могут быть переименованы и помечены как устаревшие, а не просто молча ломаться. Поистине хорошее изменение. Переименованные выходы предупреждают, а не просто исчезают.
- Настройки темы перемещены из JS-бандла в предзагружаемые данные, что меняет момент их доступности при запуске. Стоит проверить, если ваш компонент читает настройки на раннем этапе.
- Устаревшие настройки сайта для мобильного режима удалены, а пустые основные таблицы стилей для мобильных/десктопных устройств удалены. Если ваш CSS нацелен на мобильные и десктопные устройства отдельно, протестируйте на реальном телефоне после обновления.
Под капотом: Ember 6.6 → 6.10, ember-cli 6.9 → 7.0.1, миграция на Rolldown завершена, добавлена поддержка TypeScript для тем и плагинов, и удалено много jQuery повсюду.
Пользователи House Ads: встроенный JS теперь заблокирован в рекламных блоках, и административный интерфейс был перестроен на FormKit. Настройка house_ads_after_nth_root теперь также учитывается в представлении вложенных ответов.
Заметные новые функции
37 функций были выделены за эти шесть месяцев. Те, которые, как я думаю, важнее всего для общего форума сообщества:
- Предстоящие изменения — страница конфигурации и система развертывания, описанная выше.
- Вложенные ответы — экспериментальный вид темы в виде дерева/потока, настраиваемый для каждой темы и категории, с массовым включением из списка тем и переработанным мобильным опытом.
- Вход и регистрация по одноразовому коду в email (
enable_local_logins_via_code) — без пароля, сейчас в альфа-версии. Регистрация требует только email и код. - Новая страница управления категориями в админке плюс упрощенное создание категорий. Полный каталог категорий и их типов.
- Массовые действия повсеместно — массовое управление тегами (добавление/удаление/замена), массовое закрепление/открепление и массовая блокировка для неактивированных пользователей, наряду с новым фильтром статуса активации в Админка → Пользователи. Эта последняя комбинация отлично подходит для очистки волн спамерских регистраций.
Также стоит упомянуть: явную настройку домашней страницы по умолчанию, закрепленные группы эмодзи с массовым импортом/экспортом пользовательских эмодзи, теперь точки разрешены в названиях тегов, отдельная страница редактирования тегов, полный режим приложения для встраивания, синхронизация групп для OAuth2 и OpenID Connect, и живые иконки статуса PR на встроенных GitHub onebox.
Почему я сначала применил патч
Ни одно из вышеперечисленного не является причиной не переходить на 2026.7. Сама система “Предстоящие изменения” делает это стоящим, и я перейду в первую или вторую неделю следующего месяца.
Но исправления безопасности доступны в обеих ветках, что означало, что я мог отделить срочную часть от той, которая требует тестирования. Например, богатый редактор теперь является безусловным. Я уверен, что, почитав форумы, найду быстрый путь, надеюсь.
Применение патча сегодня закрыло все бюллетени. Переход теперь получает правильное окно, где я могу намеренно пройти по Предстоящим изменениям и проверить свои компоненты темы на десктопе и мобильных устройствах, не гоняясь за критической уязвимостью CVE.
Если вы на версии 2026.1 и у вас мало времени на этой неделе, я бы порекомендовал то же самое. Если у вас есть время, переходите прямо на release/2026.7, просто явно зафиксируйте её и проверьте версию Postgres.
Еще раз спасибо команде. Сайт журнала изменений сделал это исследование гораздо менее болезненным, чем было бы год назад.
Раскрытие: Я использовал ИИ, чтобы помочь мне оформить этот пост; в противном случае у меня не было бы времени его опубликовать. Пожалуйста, укажите, что мне нужно добавить, удалить или изменить.

