- Требуется Python 3.6 или новее
- Обновлены зависимости и исправлены связанные с ними баги и костыли: Flask 1.1, Click 7.0, Cerberus 1.3, Redis 3.2, Celery 4.3, pony 0.7.13
- Улучшено логирование событий
- Разрешённые символы в никах теперь можно настроить
- Текущее окружение теперь настраивается с помощью переменной окружения
FLASK_ENV
; значение по умолчанию дляMINIFICTION_SETTINGS
выбирается на базе её значения; все переменные окружения теперь можно поместить в файл.env
для удобства - Консольные команды переехали с Flask-Script на flask.cli и получили множество мелких улучшений вроде более подробной справки и дополнительных аргументов
- Число итераций хэширования PBKDF2 увеличено до 200000
- В форме входа добавлена капча, защищающая от автоматического подбора пароля
- Мелкие улучшения в скачиваемых файлов рассказов, в том числе поправлены даты в некоторых местах
- Доступны JSON-дампы рассказов по адресам вида
/story/ID_dump.jsonl
; для администраторов также доступны полные дампы/story/ID_full_dump.jsonl
- Жанры и события заменены на теги
- Фронтенд теперь частично собирается с помощью Webpack (Babel 7.0, Preact 8.2)
- Источник переименован в оригинал, и в дополнение к нему добавлено поле «Автор оригинала», которое вместе с названием оригинала индексируется в поиске (искать с использованием расширенного синтаксиса «@original_author» и «@original_title» соответственно)
- Рефакторинг боковой панели на главной странице: теперь можно менять видимость блоков и их порядок через настройки, а также подключать дополнительные блоки с помощью плагинов
- Добавлены вспомогательные функции для работы с часовыми поясами, что может быть полезно плагинам
- Добавлена галочка малого изменения рассказа для модераторов, чтобы не обновлять дату изменения рассказа зазря
- Добавлены лайт-спойлеры
<span class="spoiler-gray">...</span>
- Добавлен RSS для топа рассказов по адресу
/feeds/stories/top/
- В RSS со списком новых глав добавлены заголовки рассказов
- Добавлена возможность указать причину бана пользователя, которую он увидит
- при попытке залогиниться
- Изменены некоторые стандартные лимиты: максимальная длина главы теперь 1000000 символов, число уведомлений на странице уменьшено с 100 до 50
- В списках рассказов, глав и комментариев теперь отображается число непрочитанных глав или комментариев
- Добавлена команда
checkcounters
для проверки значений некоторых счётчиков вроде числа рассказов у тегов или числа просмотров рассказов - Исправлено неопределённое поведение счётчика просмотров рассказов при удалении глав с просмотрами (теперь все просмотры точно сохраняются)
- Имена скачиваемых файлов рассказов теперь с пробелами и русскими буквами; также для файлов проставляется корректный Content-Type
- Добавлена поддержка
X-Accel-Redirect
для nginx (включается опциейACCEL_REDIRECT_HEADER
) - Добавлена опция UMASK в настройках
- Добавлен простой автоматический поиск наиболее распространённых ошибок, связанных с оформлением текста глав
- Потенциально опасные символы (вроде escape-последовательностей) теперь удаляются из пользовательского ввода
- Добавлена капча, защищающая комментарии от гостей-спамеров (по умолчанию отключена, так как требует предварительной настройки)
- FB2 теперь по умолчанию не заворачивается в ZIP-архив (сообщали, что не все читалки нормально поддерживают ZIP)
- Исправлено отсутствие цитат (
blockquote
) в FB2 - Статус (не закончен, закончен) и состояние (активен, заморожен) рассказа объединены в одно поле (не завершен, завершен, заморожен)
- Добавлена возможность отправки жалоб на рассказы и комментарии
- Содержимое форм создания главы и комментария теперь сохраняется при закрытии страницы и восстанавливается при повторном её открытии (в пределах текущего браузера)
- Более умный алгоритм подсчёта слов: отдельно стоящие знаки препинания больше не считаются за слова
- Добавлена защита от случайной повторной отправки такого же комментария, который уже был ранее отправлен (полезно при плохом интернет-соединении)
- Мелкие улучшения области уведомлений, сносок и предпросмотра главы
- Администраторы получили возможность скрывать отдельные рассказы от поисковых систем (robots: noindex)
- Проведён рефакторинг механизма оценивания рассказов: теперь он более гибкий
- и расширяемый
- Добавлена команда
mini_fiction checkstoryvoting
для перерасчёта рейтинга рассказов - Небольшие исправления фронтенда для Opera 12 и Opera Mini
- Поддержка кэширования с помощью Redis или файловой системы
- Более красивые и функциональные страницы администрирования пользователей: с сортировкой и поиском по разным критериям, с возможностью сгенерировать ссылку для сброса пароля
- Добавлена возможность просмотра и отзыва оценок модераторами для защиты от накруток
- Улучшен алгоритм регистрации: ник не считается занятым, пока не будет активирован переходом по ссылке из письма
- Добавлен простой лог действий на странице администрирования
- Возвращены сортировка по рейтингу в поиске и работоспособность топа рассказов
- На главной странице в блоке обновившихся рассказов каждый рассказ теперь встречается не более одного раза
- Добавлена случайная сортировка в результатах поиска
- Для модераторов доступна лента локальных комментариев рассказов (комментарии из редакторской)
- В изменениях текста главы теперь винды переносы строк
- Улучшена настройка форматирования текста глав
- Для авторов доступен общий лог изменений, содержащий все их рассказы
- Изменение настроек доступа у рассказа теперь записывается в лог
- Добавлена подписка на новые рассказы авторов
- Ники в комментариях авторов рассказа теперь подсвечиваются
- Блок рассказов в шапке рассказа или саму шапку теперь можно скрыть
- Теперь можно посмотреть, какие пользователи добавили конкретный рассказ в избранное
- Топ рассказов теперь можно посмотреть за последние N дней (неделю, месяц или год)
- У отредактированных комментариев теперь отображается соответствующая иконка
- Добавлена возможность удаления пользователем своего комментария, если на него ещё никто не успел ответить
- Добавлена лента удалённых комментариев для модераторов (необходимо для выявления злоупотребления возможностью из предыдущего пункта)
- Добавлен Sitemap для рассказов и их глав
- Модераторы могут включать или отключать комментирование рассказов
- Модераторы могут включать или отключать доступ по прямой ссылке к неопубликованному рассказу
- Переделан модуль
mini_fiction.management
для упрощения расширения с помощью плагинов: для добавления новых команд теперь можно безопасно импортироватьmini_fiction.management.manager.manager
- Управление доступом к рассказу: возможность добавления бета-читателей, редакторов и соавторов; по желанию автор может отобразить их список в описании рассказа
- Теперь можно управлять публикацией не только рассказа целиком, но и отдельных глав: читателям опубликованного рассказа будут видны только опубликованные главы, а главы из черновиков будут доступны только тем, у кого есть доступ
- Хранение и отображение изменений глав
- Отдельная страница комментариев для бета-читателей и редакторов, которая не будет видна обычным читателям
- Лог модерации рассказа переименован в лог изменений и теперь доступен всем, кто участвует в написании рассказа
- Небольшой редизайн навигации в шапке
- Команда
mini_fiction status
для проверки конфигурации - Исправлен блок «Комментарии читателей» в личном кабинете автора: по ошибке отображались все комментарии ко всем рассказам
- Объявления переименованы в новости
- Добавлен блок с последними новостями на главной странице
- Возможность включения или отключения премодерации для отдельных пользователей
- Реализовано закрепление рассказов администратором вверху главной страницы
- Панель вверху страницы при чтении рассказа теперь по возможности использует
position: sticky
и должна меньше скакать - Письма на почту теперь отправляются в формате HTML
- Команда
mini_fiction sendtestemail
для проверки работоспособности почты - Добавлены уведомления на почте и на сайте о некоторых событиях
- Изменение вывода времени: в некоторых местах изменён формат или добавлены всплывающие подсказки
- Добавлено отображение числа голосов у рассказов
- Добавлено отображение числа вложенных комментариев у скрытых веток
- Добавлена возможность настройки числа комментариев на странице
- Заголовки глав теперь опциональны, что может быть удобно для рассказов, имеющих единственную главу
- Поддержка вставки произвольного HTML-кода из буфера обмена с его конвертированием в подходящий для сайта формат (проверено на Google Docs)
- Добавлен предпросмотр глав и комментариев при их добавлении или редактировании
- Переключение режимов отображения главы: выравнивание по левому краю или по ширине с переносами слов по слогам, интервал между абзацами или абзацный отступ
- Картинки для шапки сайта теперь загружаются через админку
- Добавлен системный пользователь для технических нужд
- Изменён формат дампа базы данных
- Теперь каждую ночь (по UTC) автоматически создаётся дамп некоторых системных
объектов (жанры, персонажи, картинки в шапке и т.п.), доступный публично
на странице
/dump/
- Улучшена индексация в поисковиках (meta-теги, структуры данных и т.п.)
- Множество мелких улучшений в интерфейсе
- Прочие мелкие багфиксы
- Переписаны комментарии: теперь с ветками, голосованием и автоскрытием
- Переписан фронтенд: PJAX-подобная подгрузка контента, значительное уменьшение использования jQuery и bootstrap
- Переработан бэкенд: AJAX как отдельной сущности больше нет, любой view может вернуть AJAX или не-AJAX ответ в зависимости от запроса
- Начало перемещения валидации на Cerberus
- Из статики и шаблонов убран весь специфичный для конкретного сайта контент; теперь всё следует загружать через администрирование и конфигурационные файлы
- Сделан каркас для будущих тестов
- Многочисленные исправления багов и уязвимостей (в том числе появившихся при портировании)
- Первая версия, являющаяся портированием ponyFiction на Flask и Pony ORM.