Если ваш проект на Strapi все еще использует версию летней давности или старше, вы многое упускаете. В сентябре Strapi обновился с версии v5.53 до v5.56, и некоторые изменения вы заметите сразу после открытия панели администратора. Вот что нового.
Самое крупное обновление — это новая медиабиблиотека. Это одна из функций, о которой наши клиенты и пользователи просили дольше всего; теперь она переписана с нуля и включена по умолчанию для каждого проекта. Она также оснащена новыми инструментами MCP, поэтому ваш ИИ-агент может просматривать, упорядочивать и очищать ваши медиафайлы за вас.
Если ваш проект перерос несколько десятков типов контента, вы знаете, как сложно ориентироваться в плоском списке. Теперь вы можете группировать их по папкам в Content-Type Builder, а редакторы увидят те же папки в Content Manager, чтобы каждый мог быстрее найти то, что ему нужно.
Кроме того, журналы аудита теперь отслеживают больше действий и могут быть экспортированы, а редакторам, использующим панель администратора на других языках, больше не придется сталкиваться с задержками при вводе текста.
Все это было выпущено в пяти релизах, с v5.53.0 по v5.56.0, в период с 9 по 30 сентября.
Новая медиабиблиотека теперь установлена по умолчанию (v5.54.0, #27606). Каждый проект получает ее при обновлении, ничего дополнительно включать не нужно. Это полная переработка с нуля. Вот что вы получаете.
Папки всегда на виду. В старой медиабиблиотеке папки отображались в виде карточек поверх ваших ресурсов, и «хлебные крошки» были единственным способом понять, где вы находитесь. Чтобы добраться до вложенной папки, нужно было переходить на один уровень вниз за раз, а для перемещения ресурса требовалось открывать диалоговое окно. Теперь папки находятся в дереве на боковой панели, которое всегда остается на экране, поэтому вы всегда знаете, где находитесь. Перетащите ресурс в любую папку в списке или на боковой панели, и он будет перемещен.
Загрузка файлов больше не ограничивает вас. Раньше при загрузке большой партии файлов приходилось смотреть на диалоговое окно, пока не завершится последний файл. Теперь вы запускаете загрузку и продолжаете заниматься своими делами. Просматривайте папки, редактируйте записи или вообще покиньте медиабиблиотеку. Загрузка продолжается файл за файлом и уведомляет вас о завершении.
Поиск и проверка ресурсов стали быстрее. Раньше большая библиотека была разбита на страницы, и поиск одного изображения требовал перелистывания. Проверка изображения перекрывала весь список, поэтому для просмотра нескольких файлов приходилось постоянно открывать и закрывать одно и то же окно. Теперь библиотека представляет собой единую ленту с прокруткой, а поиск, сортировка и фильтрация работают по всему содержимому, включая ресурсы и папки. Вы даже можете сортировать по размеру файла, чтобы легко находить тяжелые файлы, замедляющие работу сайта. Когда вы находите то, что нужно, детали открываются на панели рядом со списком, и вы можете продолжать просмотр, пока она открыта. Откройте изображение, чтобы рассмотреть его, обрезать и установить фокусную точку в том же месте.
Работает на планшете или телефоне. Старая медиабиблиотека была создана для экрана настольного компьютера. Новая адаптируется к экранам меньшего размера, поэтому вы можете найти или загрузить ресурс, находясь не за рабочим столом, хотя некоторые жесты для редактирования изображений пока недоступны.
В документации есть вся информация.
Если вам нужно немного больше времени, вы все еще можете вернуться к предыдущей медиабиблиотеке, добавив это в config/features:
Но действительно ли вы этого хотите?
Ваши ИИ-агенты теперь могут управлять медиафайлами (v5.54.0, #27523, #27574, #27576, #27578, #27580). До сих пор MCP-сервер Strapi мог работать с вашим контентом, но не с файлами. Плагин загрузки теперь добавляет свои собственные инструменты MCP: список и поиск ресурсов, чтение одного ресурса, просмотр дерева папок, обновление сведений о ресурсе, создание и управление папками, перемещение и удаление ресурсов. Каждый инструмент проверяет те же права доступа к медиабиблиотеке, что есть у пользователя, поэтому токен без доступа к медиабиблиотеке даже не увидит их. Конфиденциальные поля, такие как метаданные провайдера, никогда не отправляются обратно агенту.
Изображения в rich text больше не ломаются в приватных бакетах (v5.55.0, #27593). При использовании приватного S3-бакета каждая ссылка на файл, которую выдает Strapi, является подписанной ссылкой с ограниченным сроком действия (по умолчанию 15 минут). С медиаполями все было в порядке, так как Strapi подписывает их заново при каждом чтении. Изображения, вставленные в поля rich text и Blocks, не подписывались: ссылка сохранялась как есть, и после истечения срока действия изображение переставало отображаться в редакторе и в вашем API. Теперь Strapi сохраняет обычную ссылку и подписывает ее заново каждый раз, когда контент считывается. Однократная миграция очищает записи, сохраненные до исправления.
Замена файла сохраняет его местоположение (v5.54.0, #27524, #27544). Раньше при замене файла он перемещался из своей папки, а его детали терялись. Теперь он остается в своей папке и сохраняет свою информацию.
Редакторы без доступа к настройкам получают рабочую медиабиблиотеку (v5.55.0, #27687). Роли, которые могли использовать медиабиблиотеку, но не могли читать ее настройки, видели ограниченный вид. Это исправлено, и на широких экранах теперь отображается больше столбцов в сетке (#27711).
Удаление папки учитывает права доступа к ресурсам (v5.56.0, #27654). Пользователь, которому разрешено удалять только свои собственные ресурсы, раньше мог удалить папку, полную чужих файлов, и файлы удалялись вместе с ней. Теперь Strapi проверяет всю папку перед удалением и останавливается с понятным сообщением, если в ней содержатся ресурсы, которые вам не разрешено удалять. Спасибо kekekuli за это решение.
Ваши типы контента, наконец, в папках
Вы можете группировать типы контента по папкам (v5.55.0, #27419). Проекты Strapi растут. Сайт начинается с нескольких типов контента, а через год их становится пятьдесят: страницы, записи в блоге, лендинги кампаний, данные о продуктах, настройки. До сих пор каждый из них находился в одном плоском списке, как в Content-Type Builder, так и в Content Manager. Поиск нужного типа означал прокрутку или необходимость помнить его точное имя, и команды часто прибегали к префиксам в именах, чтобы держать связанные типы вместе. Папки решают эту проблему.
Создайте структуру в Content-Type Builder. Создайте папку, дайте ей имя и перетащите в нее коллекции и одиночные типы. Вы можете переименовывать и переупорядочивать папки в любое время, а также вкладывать их друг в друга до трех уровней, чтобы «Маркетинг» мог содержать «Кампании» и «Лендинги», не создавая беспорядка в корне.
Редакторы видят ту же карту. Content Manager теперь отображает ваши типы контента в виде дерева папок, которое можно открывать и закрывать. Он запоминает, какие папки вы оставили открытыми, поэтому люди, работающие в Strapi каждый день, сразу попадают в ту часть проекта, которая им нужна, вместо того чтобы прокручивать все остальное.
Структура хранится в вашем коде. Папки сохраняются в одном файле, src/content-structure/groups.json, прямо рядом с вашими схемами. Вы фиксируете его в коммите, проверяете в pull request и отправляете в каждую среду, как и остальную часть вашей модели контента. Вы также можете редактировать его вручную: если ссылка нарушается, Strapi предупреждает вас и исправляет ее, вместо того чтобы выдавать ошибку. А когда вы создаете новый тип контента через CLI, генератор может поместить его прямо в существующую папку или новую.
Очистка безопасна. Удалите папку отдельно, и ее типы контента просто переместятся на уровень выше. Удалите ее вместе с содержимым, и Strapi удалит только те типы контента, которые создал ваш проект, в то время как типы, поступающие из плагинов, останутся на месте, вне папок.
Спасибо Smoke3785 за создание этой функции.
Журналы аудита охватывают больше действий, и их можно экспортировать
Журналы аудита отвечают на один вопрос: кто, что и когда изменил. Это важнее всего в тот день, когда кто-то задает этот вопрос, будь то проверка безопасности, аудит соответствия требованиям или коллега, пытающийся понять, почему перестал работать вебхук. В этом месяце журналы аудита стали лучше справляться с этой задачей по двум направлениям.
Теперь вы можете загрузить свои журналы аудита в формате CSV (v5.53.0, #27427). До сих пор журналы аудита существовали только внутри панели администратора. Когда аудитор запрашивал данные о действиях за последние три месяца, вам приходилось делать скриншоты или писать собственные SQL-запросы к базе данных. Теперь в разделе «Настройки» > «Журналы аудита» появилась кнопка «Экспорт». Сначала отфильтруйте список по действию, пользователю или дате, и экспорт будет содержать именно то, что вы видите, с подписью, указывающей количество записей. Экспорт до одного миллиона записей работает «из коробки», и вы можете увеличить этот лимит с помощью admin.auditLogs.exportMaxRows. Не закрывайте вкладку до завершения загрузки.
Экспорт защищен так же, как и все остальное. Для него требуется отдельное разрешение «Экспорт» в дополнение к разрешению «Чтение», поэтому вы сами решаете, кто может выгружать данные аудита из Strapi, а каждый факт экспорта фиксируется в самом журнале.
Теперь отслеживается больше изменений в вашем проекте. Некоторые важные изменения раньше не оставляли следов. Когда появлялся токен API, удалялась локаль или редактировался вебхук, журнал не мог сказать, кто это сделал. За последние четыре релиза эти пробелы были устранены. Действия с релизами регистрируются начиная с v5.53.0. Управление локалями — с v5.54.0. Управление токенами — с v5.55.0. А начиная с v5.56.0, также фиксируются изменения учетных записей администраторов и паролей, а также создание, обновление или удаление вебхуков. (#27436, #27547, #27605, #27748, #27779)
Добавьте к этому действия MCP, появившиеся в августе, и журнал аудита теперь охватывает то, что люди меняют в Strapi, и то, что ИИ-агенты меняют от их имени, в одном месте, которое можно скачать.
Content Manager и панель администратора
Live preview теперь позволяет редактировать поля Blocks прямо на месте (v5.54.0, #27274). Blocks был последним основным типом поля, который нельзя было редактировать в режиме предварительного просмотра. Вы видели подсветку при наведении курсора, но двойной клик ничего не давал. Теперь при двойном клике на абзац, заголовок или список открывается редактор именно того блока, на который вы нажали, а предварительный просмотр обновляется по мере ввода текста.
Оставленная без внимания вкладка больше не приводит к потере ваших правок (v5.54.0, #27424). Когда короткоживущий токен доступа администратора истекал, Strapi воспринимал это как выход из системы. Открытая страница с несохраненными изменениями закрывалась, и ваша работа пропадала, даже если сессия была еще действительна. Теперь Strapi незаметно обновляет токен при следующем действии, и ваши правки остаются на месте. Вы увидите предупреждение только тогда, когда ваша сессия действительно завершилась.
Редактирование в панели администратора на языках, отличных от английского, снова работает быстро (v5.55.0, #26108). Если ваша панель администратора была настроена на французский, немецкий или другой язык, каждый отсутствующий перевод вызывал ошибку — сотни раз при каждом нажатии клавиши в больших типах контента. Ввод текста тормозил на одну-три секунды. Теперь эти ошибки игнорируются, отображается английский вариант по умолчанию, а ввод текста происходит мгновенно. Спасибо VibhuGupta-dev за это исправление.
Два небольших исправления навигации, которые вы заметите (v5.54.0 и v5.55.0). Нажатие кнопки «Назад» после публикации новой записи больше не перебрасывает вас в предварительно заполненную форму создания (#27604), а сохраненная сортировка списка больше не сбрасывается при возврате к коллекции (#27663). Спасибо cpruijsen и Constantine1916.
Отношения (Relations) ведут себя корректно при создании «на лету» (v5.56.0). Теперь вы можете переназначить отношение, которое все еще присутствует в опубликованной версии записи (#27602). Создание связанной записи в модальном окне больше не меняет запись, стоящую за ней, вложенные соединения, созданные там, больше не теряются при навигации, а опция создания скрыта для отношений, указывающих на одиночный тип, где она никогда не работала. Еще раз спасибо .
База данных, API и безопасность
Обновление большого локализованного проекта с v4 больше не занимает часы (v5.55.0, #27404). Миграция, которая присваивает каждой записи ID документа, повторно сканировала всю таблицу для каждой группы локалей. На таблице с примерно 214 000 строк процесс длился часами и не завершался. Теперь он группирует строки в памяти и завершается быстро. Он также сохраняет цепочки локалей вместе, которые раньше были разделены между двумя документами. Спасибо danidoff за это исправление.
Массовые обновления теперь учитывают ваши фильтры (updateMany) (v5.55.0, #27769, #26909). Вызов updateMany с поисковым запросом или фильтрами обновлял каждую строку вместо соответствующих критериям. Теперь он использует те же фильтры, что и deleteMany и count, а фильтрация по отношению также работает. Если вы вызываете updateMany в собственном коде, это исправление само по себе стоит того, чтобы обновиться.
Новые приватные поля исключаются из поиска (v5.53.0, #27482). Приватное поле скрыто из ответов API, но его содержимое все еще могло соответствовать поиску _q, что немного раскрывало информацию о том, что в нем содержится. Новые приватные поля, созданные в Content-Type Builder, теперь помечаются как не подлежащие поиску. Существующие поля не меняются: сохраните их снова в Content-Type Builder или установите searchable: false, чтобы получить ту же защиту.
Почтовый провайдер sendmail больше не считывает локальные файлы или URL-адреса в качестве вложений (v5.53.0, #27430). Вложение с путем или href заставляло провайдера считывать этот файл или получать этот URL и помещать его в письмо. Теперь принимаются только вложения с встроенным контентом. Спасибо kah-ja за исправление и turingpoint за конфиденциальное сообщение об этой проблеме.
Пользовательские инструменты MCP претерпели несколько изменений в контракте (v5.53.0, #27505). Встроенный сервер MCP теперь описывает свои инструменты с помощью JSON Schema 2020-12. Строгие клиенты MCP раньше отбрасывали каждый инструмент, предлагаемый Strapi. Теперь они сохраняют полный список. Если вы регистрируете свои собственные инструменты или подсказки MCP, меняются три вещи:
- Неизвестный или неавторизованный вызов инструмента теперь возвращает ошибку JSON-RPC -32602 вместо isError: true.
- extra.sendNotification и extra.sendRequest больше не существуют.
- Если argsSchema одной подсказки не может быть преобразована в JSON Schema (например, z.date()), все подсказки исчезают из prompts/list. Проверьте схемы своих подсказок после обновления.
React 17 больше не указан как поддерживаемый (v5.56.0, #26194). Strapi 5 уже требовал React 18 для работы, но его пакеты все еще рекламировали React 17, поэтому проект на React 17 устанавливался нормально, а затем ломался во время выполнения. Теперь пакеты требуют React 18, поэтому проблема обнаруживается на этапе установки. Если ваши настройки администратора или плагины все еще привязаны к React 17, переведите их на React 18. Спасибо unrevised6419 за это изменение.
Новая медиабиблиотека — это то, куда направлены основные усилия. Команда хочет услышать ваше мнение, поэтому, если что-то замедляет вашу работу, откройте issue или расскажите нам в Discord. Устаревшая медиабиблиотека остается доступной через useLegacyMediaLibrary, пока вы переходите на новую.
Если вы создаете плагины или настраиваете панель администратора, следите за следующей системой дизайна. В v5.56.0 добавлен экспериментальный флаг unstableNextDesignSystem в config/features, который включает сборку Tailwind для панели администратора (#27550). По умолчанию он выключен и пока не предназначен для продакшена, но он показывает, в каком направлении движется панель администратора.
Спасибо всем, кто тестировал бета-версию медиабиблиотеки и присылал отзывы. Они повлияли на то, что было выпущено в этом месяце. Только в сентябре было принято четырнадцать пулл-реквестов от сообщества: от исправлений ошибок до ускорения миграции на v4. Помимо уже упомянутых людей, спасибо akash-dabhi-qed, dijedontahiri, TupiC, yfwmaniish, Moutaz-homsi и jasleenkaur-qed42. Увидимся в следующем выпуске!








