Примечания к выпуску Discourse 2.5.0.beta5

Новые функции в 2.5.0.beta5

Миниатюры тем и модификаторы тем

Возможность отображения миниатюр для тем давно запрашивалась пользователями. Исторически для отображения таких изображений требовался плагин. В версии beta5 мы добавили поддержку модификаторов тем, включая миниатюры тем, SVG-иконки и фрагменты тем. Разработчики тем могут воспользоваться этими новыми опциями при создании или обновлении своих тем. Подробнее о модификаторах тем читайте здесь: Theme modifiers: A brief introduction.

Поддержка ярлыков приложений

Discourse теперь поддерживает новое меню ярлыков приложений — это новая функция браузеров, касающаяся установленных PWA. Ярлыки приложений в настоящее время поддерживаются на Android и Windows.

При нажатии правой кнопкой мыши или длительном нажатии на сенсорных устройствах на значок PWA вашего экземпляра Discourse откроется меню быстрого доступа с полезными ярлыками:

Подробнее и со скриншотами можно ознакомиться здесь: App Shortcut Menu support

Удаление устаревших вебхуков

В прошлом году (Discourse 2.3.0.beta7) мы выпустили Очередь проверки — единый просмотр всех элементов на проверку, таких как флаги, пользователи, сообщения и темы. Существующие вебхуки, включая flag и queued post, остались, но были дублированы вебхуком reviewable. Теперь мы удалили старые вебхуки в пользу единого вебхука reviewable.

Выборщик иконок и загрузчик изображений для аватарных украшений

Чтобы сделать добавление аватарных украшений ещё проще, мы заменили поле URL изображения на опции выбора иконки Font Awesome или загрузки изображения напрямую.

Личное сообщение при принятии членства в группе

Пользователи сейчас получают уведомление, когда их заявка на вступление в частную группу принята. Теперь вместо этого мы отправляем личное сообщение, чтобы пользователи, не заходящие на сайт, также получили электронное письмо. Текст сообщения по умолчанию:

Ваша заявка на вступление в @group_name принята, и вы теперь являетесь участником.

Как и любой текст в Discourse, это может быть изменено администраторами сайта по мере необходимости.

Поддержка PostgreSQL 12

Наш базовый образ обновлён для поддержки PostgreSQL 12. PostgreSQL 12 приносит множество улучшений, которые будут автоматически использоваться Discourse. Для обновления вашего сайта до PostgreSQL 12 потребуется два последовательных пересборки. Подробнее, включая информацию о требуемом дисковом пространстве, обновлении установки с двумя контейнерами и ручном обновлении, читайте здесь: PostgreSQL 12 update.

Релиз Discourse 2.5 в конце следующего месяца — окончание поддержки IE 11

Поддержка Internet Explorer 11 скоро будет прекращена. Мы планируем выпустить Discourse 2.5 в конце этого месяца, чтобы предоставить сайтам с пользователями, всё ещё использующими IE11, полный релиз для перехода. Discourse 2.6.beta1 и будущие выпуски не будут поддерживать IE11.

35 лайков

Ещё больше!

Но подождите, есть ещё! Мы делаем всё возможное, чтобы выделить для вас новые функции и изменения, но изменений всегда слишком много, чтобы описать их все подробно. Для полного списка новых функций, исправлений ошибок, улучшений UX и прочего обязательно ознакомьтесь с дополнительными функциями и исправлениями, перечисленными ниже.

Обновления безопасности

Эта бета-версия включает 4 исправления уязвимостей безопасности, о которых сообщили участники нашего сообщества и HackerOne.

  • Возврат случайно отменённого коммита:
  • Обеспечение того, чтобы embed_url содержал корректный http(s) URI
  • Выполнение ERB в пользовательском стиле электронной почты
  • Обновление jQuery до версии 3.5.0

Улучшения плагинов

Множество плагинов

  • Добавлен плагин rubocop-discourse
  • Исправления ошибок
    • Мы исправили множество ошибок во многих наших плагинах

Encrypt (Шифрование)

  • Удаление инструкций по ответу по электронной почте из уведомлений о зашифрованных личных сообщениях — ответ не поддерживается

Policy (Политика)

  • Уведомления о напоминании о политике теперь имеют высокий приоритет — используется зелёный значок уведомления вместо синего

Font Awesome Pro

Интеграция чата

  • Добавлен GroupMe в качестве поддерживаемого провайдера чата

Knowledge Explorer (Исследователь знаний)

  • Отображение статуса закрытия темы на скрытых страницах

Affiliate (Партнёрская программа)

  • Добавлена поддержка URL поиска

Data Explorer (Исследователь данных)

  • Добавлены дополнительные запросы

Assign (Назначение)

  • Уведомления о назначении теперь имеют высокий приоритет — используется зелёный значок уведомления вместо синего
  • Отображение аватара назначенного пользователя в кнопке и выпадающем списке

Subscriptions (Подписки)

  • Использование моделей для хранения данных
    • Это позволяет плагину отображать только информацию о подписках, созданную в Discourse. Хранение данных о подписках ограничено внешними идентификаторами, генерируемыми Stripe, чтобы мы могли взаимодействовать с API.

Zoom

  • Добавлена возможность использования join URL вместо SDK
  • Добавлена возможность обновления заголовка/даты записей прошедших вебинаров

Voting (Голосование)

  • Перемещение архивированных голосов при слиянии тем

Code Review (Рецензирование кода)

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

Discourse Hub App (Android и iOS)

  • Добавлена поддержка новых уведомлений высокого приоритета (например, закладки с напоминаниями)
  • Улучшена доступность кнопок
  • Исправлена проблема с пустым экраном в некоторых редких случаях при возврате в приложение из фона

Дополнительные функции и исправления

Нажмите, чтобы развернуть

Новые функции

  • Добавлена настройка для отключения автоматической установки правил CORS в бакетах S3
  • Постоянные ссылки для тегов
  • Настройка категории для фильтра списка по умолчанию
  • Обновление выдержки из темы при пересоздании сообщения автора темы (OP)
  • Добавлена настройка сайта для максимальной длины выдержки из темы
  • Добавлена опция cookie с атрибутом SameSite ‘None’ для возможности кросс-доменных систем
  • Экспорт Composer.serializeToTopic в клиентском API плагинов
  • Увеличение допустимой длительности загрузки
  • Добавлена конечная точка для отдельных SVG-иконок
  • Добавление структурированных данных в соответствии с рекомендациями Google
  • Введение ключа переопределения только для сотрудников для discourse-presence
  • Добавление заголовка noindex на страницы тегов
  • Разрешение аутентификации через параметры для UserApiKeys
  • Разрешение плагинам регистрировать обратный вызов для игнорирования DraftSequence
  • Канонический URL по умолчанию
  • Передача экземпляра revisor в событие DiscourseEvent post_edited
  • Добавление заголовка noindex на страницы бейджей, групп и /my
  • Разрешение индексации страниц Google для их последующего удаления
  • Добавление заголовка no_index, если роботы отключены
  • Фильтрация настроек по плагину
  • Ужестчение правил ограничения скорости для функции «Забыли пароль»
  • Исключение заглушенных категорий из списка тем «Топ»
  • Опциональное удаление закладки при отправке напоминания
  • Включение позиции категории при экспорте категорий
  • Onebox для видео с Reddit
  • Onebox для видео с Facebook
  • Nokogumbo

Исправления ошибок

  • Улучшение скрипта уменьшения размера изображений
  • Возврат false, если URL загрузки является недопустимой ссылкой mailto
  • Редактура предупреждения о доминирующей теме
  • Ошибка параллельного доступа при создании миниатюр тем
  • Не возвращать ошибку 500, если домен недопустим при добавлении домена автоматического членства
  • Не разрешать тег с именем ‘none’
  • Правильное блокирование нечеловеческих пользователей в системе черновиков
  • Включение lazyYT-container в HTML обработанного сообщения
  • В документации использовалась неверная функция
  • Стили электронной почты оценивались в неправильном порядке
  • При создании нового личного сообщения имя пользователя/группы должно быть регистронезависимым
  • Нет необходимости во втором приведении к нижнему регистру
  • Пропуск разового задания для групп с недопустимым URL эмблемы
  • Не использовать столбец flair_url в качестве запасного
  • Сохранение заголовка композера и ответа при переключении на личное сообщение
  • Удаление пользователя не удалялось, если у него был заголовок
  • Карточка группы не отображается, если пользователь не может видеть её участников
  • Явный вызов метода getURL для предотвращения переопределения контекста this
  • Выравнивание двойных кнопок на мобильных устройствах
  • Лучшее выравнивание кнопок подвала темы между браузерами
  • Мы не создаём объект Post, если отправленное сообщение отклонено. Нам нужно подсчитывать элементы рецензирования напрямую.
  • Живая перезагрузка CSS в режиме разработки
  • Удаление внешнего ключа доступа к сообщениям из загрузок
  • Поле ввода тегов сообщает, что теги необязательны, когда они обязательны
  • Разрешение использования client_id приложения GitHub для конфигурации OAuth
  • Обеспечение регистронезависимости выбора категории
  • Добавление отсутствующих тегов в заголовок опубликованной страницы
  • Грантер бейджей был отключён по умолчанию
  • Sidekiq использует _forim_session
  • Отображение счётчиков сотрудников, если количество отклонённых сообщений — единственное значение для отображения
  • Запросы не регистрировались корректно
  • Путь должен быть addon, а не app
  • Разрешение работы устаревания с Ember CLI
  • Select-kit находился не в том месте
  • Обновление default_template.html
  • guidFor не является частью Ember.Object
  • Не параметризовать tag_id
  • Не вызывать сбой при попытке разобрать недопустимые или не-ASCII URL
  • Отправка веб-хуков для флагов
  • Не устанавливать значение по умолчанию для веб-хуков без событий
  • Миграции не должны завершаться ошибкой, если база данных частично мигрирована
  • Переключение discobot на получение аватара из Gravatar
  • Удаление всех связанных данных при удалении пользователя
  • Свойство has_been_uploaded? хранилища S3 не учитывало путь к бакету S3
  • Восстановление резервных копий могло завершиться ошибкой для дампов базы данных > 8 ГиБ
  • Проверка backtrace и backtrace_locations перед попыткой вывода ошибки
  • Описание для категории ‘uncategorized’ было пустым
  • Отображение полезного сообщения при запуске плагина без backtrace
  • GroupArchivedMessage принадлежит Group, а не User
  • Применение flex для topic-footer-main-buttons
  • Объединение миграции закладок с пользователями для избежания потери записей пользователей
  • Рандомизация имени файла при создании из фикстуры
  • Использование папки /tmp/pid для хранения файлов фикстур
  • Обновление версии rack с 2.0.8 до 2.2.2
  • Восстановление резервной копии не очищало кэш переопределений переводов
  • Отмена нескольких переопределений переводов не очищала кэш
  • Улучшения и исправление регрессии с category-selector
  • Более надёжная и последовательная загрузка date-picker
  • Обеспечение отсутствия загрузки изображений при сериализации миниатюр темы
  • Разрешение удаления таймера темы с типом delete_replies
  • Обеспечение вызова hide при уничтожении карточки
  • Не удалять стоп-слова при использовании английского языка
  • Выделение reset_last_seen_cache! в user_spec
  • Переключение действия композера не обновляет содержимое действий композера
  • Компонент всё ещё использовался data explorer
  • Включение CSS-активов плагина при предварительном просмотре тем
  • Отображение заголовка в заголовке sk, если выбранное имя отсутствует
  • Корректное увеличение версии API плагина
  • Использование URL CDN для миниатюр тем
  • Разрешение миграций сообщений с использованием #change для выполнения небезопасной миграции
  • Всегда возвращать 0 для текущего DraftSequence нечеловеческого пользователя
  • Выпуск WebAPK был сломан из-за иконок ярлыков
  • Случайный сбой user_spec
  • Обход ошибки сервера WebAPK с изображениями без размеров
  • Не вычислять черновик для ботов на маршруте индекса категорий
  • Применение цитирования кода без подсветки синтаксиса
  • Использование правильных иконок для меню ярлыка приложения
  • Запуск тестов cookie только после входа в систему
  • Разрешение загрузки миниатюр lazy-yt через pull_hotlinked_images
  • Удаление старой миграции
  • Не вычислять черновик для (ро)ботов :robot: в списке тем
  • Специфическая ошибка электронной почты для ответов на дайджест-письма
  • Обнаружение Wayback Machine по user agent
  • Загрузка локали первым в приложении wizard
  • Обновление mini racer для корректных дампов кучи
  • Никогда не сохранять черновик, пока он сохраняется
  • Не публиковать присутствие при вводе, если композер не открыт
  • Предотвращение прокрутки Safari при закрытии композера
  • Предотвращение запроса ThemeField дважды в SvgSprite.bundle
  • Присутствие композера показывает пользователя как редактирующего при ответе
  • Ограничение функции ввода в discourse-presence
  • Возврат URL /bookmarks к списку тем и добавление аватаров авторов закладок
  • Обработка отсутствующего возврата URL SSO провайдером
  • Предотвращение конфликтов имён столбцов в коде reviewable
  • Обеспечение правильного вычисления часового пояса для текущего пользователя в предварительном просмотре
  • Добавление типа для иконок меню ярлыка
  • Не выбрасывать исключение, если TopicLink не может быть создан
  • Добавление отсутствующих маршрутов RSS в белый список параметров API
  • Отображение кнопки «Настройки», если у плагина есть настройки
  • Безусловное сохранение черновиков увеличивает последовательность
  • Удаление лишних обратных слешей в регулярном выражении
  • Добавление tabindex=-1 на ссылки постов в tabLoc
  • Улучшение доступности навигации подвала на мобильных устройствах
  • Установка заголовка для кнопки уведомлений
  • Множественные улучшения schema.org
  • Заголовок должен пытаться использовать label перед name
  • Обработка удалённой темы при генерации миниатюр
  • Отображение имени категории в предварительном просмотре бейджа при редактировании
  • Предотвращение рендеринга topic-category, если он пуст
  • Остановка ошибочного очищения заголовка
  • Заголовок по умолчанию пуст при открытии
  • Решение проблем с «Следующий понедельник» для закладок, не работающих в некоторых локалях
  • CurrentUser теперь должен передаваться в resolveTimezone для решения проблем с локальным временем карточки пользователя
  • ESC для закрытия пустого черновика темы композера
  • Ввод в модальном окне закладок
  • Поддержка транспиляции js в плагинах с корневым админ-папкой
  • Некоторые корректировки интерфейса таблицы
  • Не запускать событие user_updated для пользователей-ботов
  • Удаление устаревшего URI.escape
  • Не разрешать null-опции для менеджера закладок
  • Миграция для установки столбца NOT NULL для delete_when_reminder_sent в закладках
  • Неверный класс CSS
  • Скобки были неверными, что приводило к всегда истинному выражению
  • preload-store был удалён
  • Улучшение позиционирования sk на мобильных устройствах внутри модального окна
  • Отображение кнопки «Закладка» для тем личных сообщений
  • Улучшение логики расчёта таймлайна темы
  • Корректное имя пользователя в уведомлении об редактировании для личных сообщений
  • Использование default_locale в подстановках локали вызывало проблемы
  • Сделать can_invite_to_forum устойчивым к вмешательству плагинов
  • Отображение даты закрытия опроса в местном времени
  • Preload-store был перемещён
  • Конечная дата диапазонов в HTML-предварительном просмотре была неверной
  • Изменение расчёта общего количества непрочитанных уведомлений в дайджест-письме пользователя
  • Discobot не был создан с нашим пользовательским аватаром
  • Сохранение блоков кода при цитировании
  • Нестабильные тесты. Из-за переходов CSS непрозрачность может быть ещё не 0
  • Исправление обёртки кнопок с большими кнопками
  • Избегание использования временной таблицы при миграции базы данных URL изображений
  • Решение проблем валидации Schema.org
  • Применение sameWidth с ширины экрана 450px
  • Предварительный выбор «Позже сегодня» при редактировании закладки, если время совпадает
  • Отказ PostgreSQL был сломан из-за маскирования исключений Rails
  • Улучшение стиля дайджест-письма в Outlook 2016
  • Возврат к использованию наблюдателя для поддержки загрузки большего количества уведомлений

Изменения UX

  • Удаление живого предварительного просмотра тем в пользу обновления
  • Имя пользователя вместо username для заголовка ссылки профиля
  • Добавление заголовка для ссылки профиля пользователя
  • Более последовательные стили мобильных баннеров/уведомлений, очистка CSS
  • Перемещение editFirstPost в тегируемые личные сообщения в выпадающем списке на мобильных устройствах
  • Удаление текста из кнопок закладки и поделиться для личных сообщений
  • Переименование «Редактировать сообщение» в «Редактировать»
  • Удаление жирного шрифта из текста бейджа категории
  • Улучшение поведения загрузки кнопки уведомлений темы
  • Добавление визуальной обратной связи при изменении уровня уведомлений темы
  • Удаление стрелки из кнопки уведомлений
  • Разрешение кэширования безопасных URL медиа в течение короткого периода времени
  • Отображение стрелки только в выпадающих списках кнопок подвала темы
  • Разрешение выпадающему списку отображать стрелку
  • Загрузка изображений YouTube более высокого разрешения, где доступно
  • Фокус на имени категории при редактировании категории
  • Добавление скопированного текста после нажатия кнопки копирования
  • Лучшая иконка действия композера при создании новой темы
  • Добавление символа в отчёт TL3, если количество ответов на тему ограничено
  • Не использовать маленькие изображения onebox как изображения постов/тем
  • Ограничение изменений клавиатуры модального окна iOS для композера
  • Введение действий композера при редактировании сообщения
  • Не отключать кнопку «Создать учётную запись» и отображать сообщение об ошибке для обязательных полей
  • Исправление жёстко заданного значения в описании бейджа Crazy in Love
  • Улучшение отображения сообщения валидации настройки сайта
  • Удаление подчеркивания из элементов del и ins
  • Предотвращение наложения таймлайна на кнопки подвала темы
  • Улучшение выравнивания и согласованности кнопки закрытия баннера и уведомления
  • Исправление позиционирования модального окна, когда клавиатура iOS видна
  • Корректировка меню администратора для лучшего соответствия коротким (горизонтальным) видам экрана
  • Удаление верхнего отступа из описания onebox Reddit
  • Удаление жирного шрифта для уменьшения акцента на именах категорий в посещённых темах
  • Исправление выравнивания времени на страницах активности пользователя
  • Добавление префиксного свойства, чтобы Firefox также получал табы с 4 пробелами в коде
  • Попытка более эффективного использования доступного пространства с sk
  • Настройки удаления закладки
  • Улучшение интерфейса второго фактора

Производительность

  • Избегание обхода DOM в loadScript
  • Удаление внешних ключей из закладок
  • Обеспечение выполнения полной сборки мусора в контекстах
  • Дематериализация topic_reply_count
  • Избегание состояний гонки при создании ссылок на темы
  • Избегание выполнения одного и того же запроса дважды
  • Избегание обращения к базе данных при получении последовательности черновика пользователя-бота
  • Уменьшение эксклюзивной блокировки при изменении таблиц
  • Перемещение получения аватара в hijack для сертификата discobot
33 лайка