Заметки к выпуску Discourse 2.4.0.beta2

Новые функции в версии 2.4.0.beta2

Несколько факторов TOTP

Настройки TOTP/2FA теперь централизованы на одной странице.

На новой целевой странице TOTP вы можете управлять существующими факторами TOTP и резервными кодами. Кроме того, если вам нужны несколько факторов TOTP, теперь вы можете добавлять и управлять ими здесь.

Улучшенный поиск по тегам

Поиск теперь включает несколько новых опций для тегов. Во-первых, при поиске по тегу он отображается в поле поиска, а также в темах.

Группы тегов — это удобный способ организации тегов, например, группы тегов, используемых для управления документацией. Теперь вы можете искать по группе тегов, используя #tag-group как поисковый запрос.

Поиск по группе тегов возвращает результаты с темами, помеченными любым тегом из группы.

Наконец, вы можете искать помеченные или непомеченные темы, используя поисковые операторы in:tagged или in:untagged.

Отключение компонентов темы

У вас есть компонент темы, который нарушает работу вашего сайта? Или вы просто хотите временно его отключить? Компоненты темы теперь можно отключить в меню Администрирование > Настройка > Компоненты.

Когда компонент отключен, появляется уведомление с указанием, кто его отключил, и кнопкой для его включения.

Улучшенная навигация с клавиатуры

В предыдущих версиях мы улучшили сочетания клавиш для навигации, J и K, чтобы обеспечить лучший пользовательский опыт за счет плавной прокрутки и разделения длинных сообщений на несколько нажатий (оригинальный компонент темы).

В последней версии мы изменили это, чтобы пользователи могли комбинировать навигацию с клавиатуры с прокруткой мышью. Например, если пользователь нажимает J до сообщения №42, прокручивает мышью до сообщения №50, а затем снова нажимает J, навигация продолжится с сообщения №51. Ранее она продолжалась с сообщения №43, но это больше не так (оригинальная идея).

28 лайков

Ещё больше!

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

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

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

  • XSS при отображении отслеживаемых слов в панели администратора.
  • SQL-инъекция с категориями по умолчанию.
  • Обновление lodash.
  • XSS с селектором заголовков на странице настроек.
  • Удаление HTML из приглашений по электронной почте.
  • XSS в маршрутах.
  • Экранирование текста электронной почты для сообщений, содержащих [details].

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

Discourse Solved

  • Улучшено положение и видимость кнопки

Discourse Tooltips

  • Обновление js-yaml до версии 3.13.1

Discourse Style Guide

  • Упрощение стиля кнопок, справочник классов
  • Объяснение системы масштабирования шрифтов

Discourse Spoiler Alert

  • ИСПРАВЛЕНО: панель инструментов генерирует некорректные многострочные спойлеры

Discourse Code Review

  • Уведомления об одобрении
  • Переименование переопределённого метода заголовка

Discourse Assign

  • Пропуск постановки напоминаний в очередь, если группы не разрешены
  • Отправка сообщений о назначении на языке уведомляемого пользователя

Discourse Voting

  • Добавлен уникальный индекс для пользовательских полей темы «vote_count»
  • Исправлено имя класса миграции
  • Используется правильный URL для сортировки по голосам

Discourse OAuth2 Basic

  • Разрешение провайдеру устанавливать состояние проверки электронной почты
  • Использование данных пользователя из обратного вызова токена
  • Обработка сбоя получения данных пользователя

Docker Manager

  • Шина сообщений при использовании longPollingBaseUrl не заменяет символы корректно
  • Обновление lodash.defaultsdeep до версии 4.6.1
  • Обновление клиентского приложения для включения шины сообщений

Discourse Staff Notes

  • Улучшено оформление, переименование «заметок персонала» в «заметки пользователя» в переводах

Discourse Ad Plugin

  • Поддержка нескольких размеров рекламы в AdSense и Ad Manager

Discourse Chat Integration

  • Использование отображаемых имён Slack вместо поля «name»

Discourse Prometheus Alert Receiver

  • Повторная синхронизация заголовков тем
  • Не использовать время начала для ключей оповещений при расчёте устаревших уведомлений
  • Исправлена логика определения устаревшей длительности
  • Добавлена поддержка повторной синхронизации с полезной нагрузкой негруппированных оповещений

Discourse GitHub

  • Использование GitHub API для выдачи значков вместо клонирования репозиториев
  • Добавлена настройка сайта для исключения перезаписи постоянных ссылок
  • Поддержка нескольких электронных адресов
  • Ошибка Octokit при наличии завершающего слэша в названии репозитория
  • Не вызывать ошибки в задачах, если URL-адреса не находятся в GitHub

Discourse Calendar

  • Добавлен идентификатор для предотвращения утечек памяти
  • Расчёт праздников для активных пользователей

Discourse Plugin Discord Auth

  • Разрешение отзыва доступа

Discourse Translator

  • Использование zh-Hans и zh-Hant в качестве кодов языка для API Microsoft

Discourse Akismet

  • Использование журнала токенов авторизации для получения информации о user-agent/user-ip при отправке данных в Akismet

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

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

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

  • Использование настроенных кавычек в красивых заголовках тем
  • Настройка сайта для типографских кавычек
  • Переназначение загрузок при восстановлении при изменении S3 или CDN
  • Добавлена скрытая настройка для включения загрузок S3 в резервные копии
  • Разрешение Markdown в уведомлениях о сообщениях. (#7864)
  • Отображение кнопки входа и регистрации в макете без ember (#7867)
  • Добавление «Владельцев группы» в параметры публикации для групп
  • Добавлена новая опция видимости группы для «зарегистрированных пользователей» (#7814)
  • Установщик тем через Rake (#7848)
  • Добавлен белорусский язык
  • Опциональные рекомендации по темам для пользователей без доступа (#7852)
  • Поддержка параметров запроса при перенаправлении на внутреннюю ссылку при входе (#7829)
  • Добавление классов CSS к строкам связанных аккаунтов
  • При экстремальной нагрузке отключение поиска
  • Предварительное заполнение заголовка для личных сообщений из темы
  • Добавлена бесконечная прокрутка на странице списка пользователей администратора (#7821)
  • Экспорт любого типа отчёта с поддержкой табличного режима. (#7662)
  • Добавлена конечная точка для индивидуального обновления настройки темы (#7789)
  • Применение небольшого штрафа к закрытым темам при поиске (#7782)
  • Добавлена ранняя поддержка новых эмодзи (#7785)

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

  • Разрешение амперсанда в маршрутах site_texts
  • Пересчёт настроек при изменении зависимых настроек
  • Использование локали по умолчанию для причин флагов
  • Не показывать bootbox, если у сообщения нет ответов. (#7866)
  • Отключение логирования поиска в режиме только для чтения (#7877)
  • Обеспечение отображения спиннера на странице тегов/show при загрузке дополнительных данных (#7876)
  • Обеспечение работы маршрутизации с хешем без зависания истории (#7872)
  • Обеспечение работы маршрутизации с хешем без зависания истории
  • Последняя версия Selenium сломала скрипт импорта Google Groups
  • Неправильное переназначение при восстановлении для URL-адресов CDN
  • Иное переназначение при восстановлении из резервной копии с нескольких сайтов
  • Коды выхода тестов Turbo
  • Очистка содержимого редактора тем при переключении вкладок
  • Переназначение не должно пытаться изменять столбцы только для чтения
  • Отображение названия категории в заголовке для представления для краулеров
  • Использование правильного часового пояса для ручного SQL
  • Не использовать исключения для перехвата конфликтов
  • Кнопка «Назад» переходила к предыдущей теме вместо списка
  • Добавление размера изображения только при наличии ширины и высоты в пикселях
  • Проблема сетки IE на странице собственной активности пользователя
  • Сбой, если ни один из наших тегов не мог быть обновлён
  • Не показывать кнопку приглашения, если локальные входы отключены
  • Обеспечение работы маршрутизации к / с строкой запроса (#7859)
  • Не отключать download_remote_images_to_local, если сайт использует S3 (#7861)
  • Вставка или обновление пользовательского поля при сбое уникального ограничения
  • Обеспечение правильной заголовка disposition для загрузки изображения в lightbox в S3 (#7845)
  • Предотвращение того, чтобы emoji-picker не отображался (#7856)
  • Уважение параметра full_screen_login от провайдеров аутентификации плагинов (#7855)
  • Использование атрибута title для элементов уведомлений. (#7840)
  • Удаление неуместной кнопки сохранения
  • Отображение кнопки «Экспорт» для всех табличных отчётов. (#7838)
  • Журналы включения/выключения компонентов должны отображаться в журналах действий персонала
  • Обеспечение работы помощника по эмодзи с пользовательскими эмодзи (#7843)
  • Обеспечение корректной маршрутизации /t/ID_ТЕМЫ/НОМЕР_СООБЩЕНИЯ (#7841)
  • Страница начинается с 1 (#7844)
  • Удаление неуместного outlet
  • Создание нового значка завершается сбоем при пустом SQL-запросе (#7837)
  • Отображение кнопки удаления таймера только пользователям с соответствующими правами
  • Использование обычного заголовка вместо красивого заголовка для предварительно заполненного композитора
  • Не отправлять уведомление по электронной почте, если пользователь не имеет права видеть тему
  • Обеспечение использования абсолютного пути статическими страницами (#7828)
  • Копирование локальных изменений темы в правильную временную папку при сравнении обновлений удалённой темы
  • Исправление ошибки навигации
  • FakeExceptions должны иметь оригинальное имя класса
  • Причина исключения сама по себе является исключением
  • Пометка тем в подкатегориях как непрочитанных при закрытии родительской
  • Turbo_rspec не принимает эти параметры
  • Включение только ожидаемых/согласованных баллов в общий балл
  • Предоставление помощника по эмодзи для замены кодов изображениями (#7802)
  • Предотвращение сбоя при изменении TL на внутреннем объекте (#7808)
  • Не разрешать создание темы, если нет доступной категории для публикации (#7786)
  • Вызов действия со строкой устарел (#7807)
  • Закрытие меню поиска по клавише Escape (#7804)
  • Не включать uncategorized_category_id в topic_create_allowed, если публикация в некатегоризированных темах отключена
  • Обеспечение существования темы перед созданием баннера. (#7781)
  • Не использовать DistributedCache для хранения состояния только для чтения redis
  • CategoryUser#batch_set (#7787)
  • Удаление notification_level из уникальных индексов category_users
  • CategoryUser#batch_set не обновлял существующие записи
  • Изменения сообщались неверно
  • Итерация при очистке кэша отслеживаемых слов
  • URL-адреса загрузки для мультисайтов должны содержать либо имя базы данных, либо слово ‘short-url’.
  • Переполнение на мобильных устройствах для высоких фиксированных модальных окон
  • Обеспечение работы URL-адреса полного обзора разговора в подпапке
  • Поиск в выборе категории должен быть ограничен категорией (#7794)
  • Обеспечение срабатывания события :after_auth. (#7791)
  • Проделки кнопки «Назад» при перенаправлении из маршрутов index
  • Поддержка возврата каретки в InlineUploads.
  • Не заменять теги img внутри тегов anchor форматом markdown.
  • Частный случай с тегом anchor в InlineUploads.
  • Некоторые операции панели инструментов не вызывали событие change
  • Если пользователь удаляет скрытое сообщение, история не должна теряться
  • Не обновлять все настройки при сохранении для всех настроек, ограничить только несколькими
  • Изменение параметра ‘status’ не фильтровало темы в маршруте тегов.
  • Частный случай BBcode для InlineUploads.
  • Использование правильного имени для настройки сайта selectable_avatars_enabled
  • InlineUploads должен заменять ссылки на вложения текстом markdown.
  • Upload#short_url генерирует неверный URL, если расширение равно nil.
  • Не разрешать пользователям редактировать информацию о теме, когда автор оригинала заблокирован
  • Не удалось изменить виджет, которого нет в реестре
  • Удаление временного исправления для исправления ошибки iOS (#7773)

Изменения UX

  • Обеспечение отображения popup-tip над выпадающими списками (#7891)
  • Исправления стиля мобильного редактора (#7878)
  • Обновление плейсхолдера для групп тегов
  • Добавление атрибута title и aria-label для ссылки на иконку ЛС
  • Отмена выбора сообщения, если оно не в области видимости. (#7869)
  • Исправление выравнивания кнопки расширения сообщения (#7865)
  • Установка высоты логотипа сайта по умолчанию равной ровно 40 пикселям
  • Добавление ширины иконкам значков для размещения SVG без размеров
  • Улучшение статуса Twitter в onebox с разрывами строк
  • Добавление стиля для цитируемых твитов (#7832)
  • Улучшение стиля результатов похожих тем в композиторе (#7839)
  • Размещение тегов и категорий на одной строке в результатах меню поиска (#7830)
  • Улучшенное мобильное положение кнопки удаления таймера темы
  • Предоставление каждой информации своей строки в результатах меню поиска (#7825)
  • Обновление текста ignored_user_summary (#7748)
  • Перемещение ссылки для показа отслеживаемых тем, упрощение перевода
  • Изменение иконки для плейсхолдера видео
  • Скрытие всплывающей подсказки «сообщение не прочитано» после прочтения сообщения (#7813)
  • Установка серого цвета для иконки плейсхолдера видео в onebox
  • Требование подтверждения при одобрении сообщения в закрытой теме
  • Новая встроенная кнопка для удаления таймера темы (#7790)
  • Добавление ярлыка для отложенных тем (#7798)
  • Улучшение выбора даты в модальном окне изменения временной метки (#7771)
  • Отображение иконки лайка на архивированных сообщениях (#7775)

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

  • Использование Oj для сериализации JSON. (#7820)
  • Ограничение времени, затрачиваемого на сравнение больших фрагментов текста
23 лайка