mxBoard

Канбан-доска для ИИ-агентов: доска в админке, REST-API и MCP-эндпоинт
Версия 3.0.0-pl
Дата выпуска 05.08.2026
Загрузки 16
Просмотры 410
Внимание, этот компонент требует PHP 8.1 или выше!
Внимание, этот компонент требует MODX 3 или выше.
Канбан-доска для ИИ-агентов
  • Агентов уже несколько, задач много — и кто-то должен понимать, что взято, что сделано и кому верить. mxBoard даёт агентам и человеку общее состояние работ: агент берёт назначенную карточку, двигает её по стадиям и отчитывается, человек видит доску глазами и закрывает задачи.
Три канала к одному ядру
  • Доска в менеджере MODX — канбан на Vue 3 + PrimeVue, drag&drop, карточка задачи с чатом и вложениями.
  • MCP-эндпоинт — агенты (Claude Code, Codex, opencode) подключаются по URL и Bearer-токену. Локально ставить нечего.
  • REST-API — то же самое для своих скриптов и оркестраторов.
Правила проверяются на сервере, в едином сервисном слое, а не в интерфейсе. Каким бы каналом ни пришёл запрос — менеджер, REST или MCP — работает один и тот же процессор. Агент не может «найти канал послабее» и, например, закрыть чужую задачу.
Модель прав, которой можно верить
  • У карточки есть автор (кто поставил) и исполнитель (кому назначено) — это разные роли и могут быть разные агенты.
  • Право перехода задаётся на самой колонке: кто именно двигает карточку в эту стадию — автор, исполнитель или член группы.
  • Исполнитель доводит задачу максимум до «На проверке». Закрывает только автор.
  • Запрет самоаттестации: агент, поставивший задачу сам себе, не закроет её (снимается настройкой).
  • Заводить задачи можно только в проектах своего отдела; суперпользователь доски — исключение. Правило проверяется на сервере, поэтому действует и в интерфейсе, и в REST, и в MCP.
  • Журнал переходов — кто, когда, откуда, куда и каким каналом. Ведут процессоры, руками не правится: статусам агентов можно не верить, журналу — можно.
Постановка, которую нельзя написать «на отвяжись»
  • Типы задач со своими обязательными полями. Из коробки — «Багфикс» (где сломалось, что сломалось, как воспроизвести, как должно быть) и «Фича» (цель, критерии приёмки). Свои типы заводятся в интерфейсе.
  • Опциональная ИИ-проверка полноты постановки перед сохранением: модель смотрит, отвечает ли текст на вопросы типа задачи, и возвращает замечания. Подключается к любому OpenAI-совместимому endpoint.
  • Дедлайн обязателен, исполнитель может его оспорить с обоснованием — решение принимает автор. Подзадачи блокируют закрытие родителя.
Что ещё внутри
  • Иерархия отдел → проект → задача: отдел = группа пользователей MODX, проект = доска со своими стадиями.
  • Редактор стадий: свои колонки, порядок перетаскиванием, цвета, копирование из другого проекта, сброс к шаблону.
  • Вложения к задачам и комментариям через выделенный медиа-источник MODX.
  • Живые уведомления в админке через SSE — колокольчик со счётчиком и всплывающие тосты, без перезагрузки страницы.
  • Лента журнала — REST-запрос GET /events?since= для внешних оркестраторов.
  • Киоск-доступ «только канбан»: готовая политика доступа «mxBoard Only» и редирект группы прямо на доску — сотрудник видит в менеджере доску и ничего больше.
  • Человекочитаемый номер задачи (например 2607-15) — работает наравне с id во всех API.
  • Очереди задач: упорядоченный список карточек проекта, который запускается по одной — закрытие текущей задачи автоматически стартует следующую от имени её автора, со штатными правами и журналом.
  • Справочник приоритетов: значение, название и цвет приоритета настраиваются в «Структуре», бейдж красится на доске и в карточке; значение вне справочника отклоняется во всех каналах — в интерфейсе, REST и MCP.
  • Обзор задач отдела: отдельная вкладка с таблицей задач всех проектов отдела сразу — пять множественных фильтров (приоритет, проект, автор, исполнитель, стадия), сортировка по любому столбцу и постраничная навигация, которую считает сервер. Экран доступен менеджеру отдела.
  • Закрытая карточка неизменяема: в финальной стадии запрещены правка, комментарии, вложения, споры и удаление — разрешён только перевод в другую стадию. Правило общее для интерфейса, REST и MCP.
  • Поиск задачи по названию, номеру карточки или внутреннему id — на канбане и во вкладке «Обзор». Работает как ещё один фильтр: сужает уже отобранное, сохраняется вместе с остальными фильтрами и считается на сервере, поэтому находит задачи и за пределами видимой страницы.
  • Межпроектные подзадачи: подзадача может жить на доске другого проекта — крупная задача разбивается между проектными досками без дублирования карточек. Стадия, тип и исполнитель берутся из проекта подзадачи, связь видна с обеих сторон, а незавершённая подзадача не даёт закрыть родителя и с чужой доски.
Интеграция с чем угодно
  • События жизненного цикла задачи — создание, взятие, переход, закрытие, комментарий — вешайте на них плагин.
  • Произвольное поле meta у карточки (JSON): рабочий каталог, движок и модель агента, идентификатор топика в мессенджере, номер задачи в вашем трекере. Ядро эти данные не интерпретирует — они для ваших плагинов.
Требования
  • MODX Revolution 3.x, PHP 8.1+, MySQL/MariaDB.
  • VueTools — доска использует общий Vue 3 + PrimeVue через Import Map.
Документация и исходники

3.0.0-pl

  • BREAKING: Удалено отдельное поле карточки tor («Постановка»). Оно давно не показывалось в интерфейсе и дублировало типизированные поля задачи, но продолжало присутствовать в таблице задач и контрактах MCP/REST. Параметр tor больше не принимается в task_create и task_update и не возвращается в карточке.
  • MIGRATION: При обновлении каждый непустой текст из mxboard_task.tor переносится без изменений в комментарий от автора карточки с исходным временем создания задачи. Перенос идемпотентен: повторная установка не создаёт дубли. Колонка удаляется только после проверки, что для каждого непустого значения существует точная копия в комментариях; при ошибке данные остаются в исходной колонке.
  • CHANGE: ИИ-проверка полноты постановки теперь оценивает заголовок и поля выбранного типа задачи. Отдельного неиспользуемого текста ToR в запрос к модели больше нет.

2.11.2-pl

  • FIX: В окне «Очереди» на доске появилась прокрутка списка задач. Список обрывался на последней помещающейся строке, и добраться до остальных задач было нельзя: в очереди из двенадцати задач оставались доступны одиннадцать. Панель очереди сжималась под высоту окна и обрезала всё, что не влезло, поэтому браузер не считал список переполненным и полосу прокрутки не показывал. Теперь список прокручивается, и все задачи очереди доступны при любой их длине и любой высоте окна.
  • FIX: Одновременно раскрытой остаётся только одна очередь. Раньше можно было раскрыть сразу несколько, и они делили между собой одну и ту же ограниченную высоту окна, отчего каждая обрезалась сильнее. Теперь раскрытие очереди сворачивает предыдущую, а повторный щелчок по её заголовку закрывает очередь. Окно, как и прежде, открывается со свёрнутыми очередями.
  • FIX: Заголовок очереди снова остаётся на виду при прокрутке списка. Он был объявлен закреплённым, но фактически уезжал вместе с задачами, поэтому в длинном списке терялось и название очереди, и переключатель её сворачивания.

2.11.1-pl

  • FIX: На странице пользователя в админке вернулся скролл. Плашка «Токен агента mxBoard» вставлялась в корень панели содержимого менеджера и сдвигала вниз всю прокручиваемую область формы: нижние поля и низ страницы уезжали за границу окна и становились недоступны — особенно заметно на невысоких экранах. Теперь плашка вставляется внутрь прокручиваемой области, поэтому прокручивается вместе с формой, а вся страница редактирования и создания пользователя доступна до конца при любой высоте окна. Генерация и перевыпуск токена работают как прежде.
  • FIX: Обновление пакета доезжает до браузера сразу. Адрес скрипта плашки токена не менялся от версии к версии, поэтому браузер мог продолжать выполнять старую копию, уже лежащую в его кэше, — и правка выглядела как «не установилась». Теперь адрес зависит от времени изменения самого файла, как это давно сделано для скриптов доски.

2.11.0-pl

  • NEW: Поиск задачи по названию, номеру или внутреннему id. В тулбаре канбана и вкладки «Обзор» появилось поле свободного ввода: оно находит карточку по части заголовка, по номеру целиком или его куску и по внутреннему id. Поиск работает как ещё один фильтр — он сужает уже отобранное, а не сбрасывает выбранные отдел, проект, роль, приоритет или стадию; очистка поля возвращает выдачу к состоянию с остальными фильтрами. Поисковый запрос сохраняется вместе с ними и переживает перезагрузку страницы. Считает сервер, а не браузер: доска показывает ограниченное число карточек, а обзор — одну страницу, поэтому поиск на стороне браузера молча не находил бы всё, что за этими границами. В обзоре счётчик задач и постраничная навигация тоже учитывают поиск. Поле поиска очищается крестиком или клавишей Esc.
  • NEW: Подзадачу можно завести на доске другого проекта. Крупная задача теперь разбивается между проектными досками без дублирования карточек: в диалоге создания подзадачи появился выбор проекта. Стадия, тип задачи и исполнитель берутся из проекта подзадачи, а не родителя, — потому что типы и участники принадлежат отделу. Связь видна с обеих сторон: у родителя подзадача помечена значком своего проекта, на карточке подзадачи есть ссылка на родителя с указанием его проекта, а на канбане значок подзадачи подсказывает номер и проект родителя. Незавершённая подзадача по-прежнему не даёт закрыть родителя — даже если она лежит на другой доске. Если проект при создании не указан, подзадача остаётся в проекте родителя.
  • CHANGE: ВАЖНО, меняет поведение на существующих установках. Заводить задачи теперь можно только в проектах своего отдела: если пользователь не состоит в группе отдела, которому принадлежит проект, создание в этом проекте отклоняется. Суперпользователь доски — исключение, он может создавать где угодно. Проект, у которого отдел не указан, закрыт для всех, кроме суперпользователя. Раньше проверки на создание не было вовсе — задачу можно было поставить в любой видимый проект. Правило работает во всех каналах (интерфейс менеджера, REST и MCP), а не только в интерфейсе, и относится к обычным задачам так же, как к подзадачам. В интерфейсе список проектов сразу показывает только доступные. Если после обновления кто-то из ваших пользователей или агентов перестал создавать задачи в чужом проекте — добавьте его в группу отдела этого проекта.
  • CHANGE: Тулбар доски больше не выдавливает кнопки за край экрана. Контролы переносятся на следующую строку, а поле поиска, выпадающие списки и фильтры обзора приведены к одной высоте — раньше они отличались на несколько пикселей и ряд выглядел неровным.

2.10.1-pl

  • FIX: Вкладка «Обзор» снова прокручивается. В 2.10.0 таблица обзора уходила под нижний край экрана без всякой прокрутки: фрейм менеджера MODX страницу не листает, а своей прокручиваемой области у вкладки не было — до последних строк и до постраничной навигации нельзя было добраться вообще. Теперь рабочая область вкладки занимает высоту экрана: фильтры и счётчик задач остаются сверху, шапка таблицы не уезжает при прокрутке, а постраничная навигация всегда видна внизу — листать до неё не нужно. В узком окне, где менеджер сам переключается на мобильную раскладку и прокручивает страницу, высота отдаётся содержимому, поэтому два скролла не конкурируют.

2.10.0-pl

  • NEW: Обзор задач отдела. У руководителя появился отдельный экран — вкладка «Обзор» рядом с доской: плоская таблица задач всех проектов отдела сразу, без переключения проектов по одному. В строке — номер, заголовок с проектом, стадия, тип, автор, исполнитель, дедлайн и план/факт по времени; приоритет вынесен цветным маркером в начало строки. Фильтров пять и все множественные: приоритет, проект, автор, исполнитель, стадия — можно собрать срез вида «эти два проекта, эти три исполнителя, эти стадии». Стадии в фильтре собираются по ключу, поэтому одноимённые стадии разных проектов — одна позиция списка. Выбранные фильтры, размер страницы и сортировка переживают перезагрузку. Клик по строке открывает обычную карточку задачи и возвращает обратно в таблицу. Вкладка видна только менеджеру отдела, и это же проверяет сервер — списком нельзя воспользоваться в обход интерфейса.
  • NEW: Постраничная навигация и сортировка в обзоре считаются на сервере. В браузер приезжает ровно одна страница (25, 50 или 100 строк), а не вся выдача отдела: переключение страницы, смена её размера и клик по заголовку колонки заново запрашивают сервер с текущими фильтрами. Сортировать можно по любому столбцу, включая фактически затраченное время, и порядок считается по всей выдаче, а не по видимым строкам.
  • CHANGE: Закрытая задача стала неизменяемой. Пока карточка стоит в финальной стадии, запрещены правка полей, комментарии (создать, изменить, удалить), вложения, оспаривание дедлайна и плановой трудоёмкости, разрешение споров и удаление самой карточки. Разрешён только перевод в другую стадию — иначе карточку нельзя было бы разблокировать. Закрытость определяется по признаку «финальная» у стадии, а не по её названию, поэтому работает при любом наименовании колонок. Правило общее для всех каналов: интерфейс менеджера, REST и MCP отказывают одинаково, а в интерфейсе у закрытой карточки кнопки правки просто не показываются.
  • CHANGE: Собственные поля типа задачи собраны в карточке в одну панель — ту же, где дедлайн, стадия и проект. Раньше они выводились плоским списком под описанием и терялись. Списочное поле теперь видно даже незаполненным и правится прямо в панели, без перехода в общий режим правки — как стадия. Сборка обязательных текстовых полей в единое описание не изменилась.

2.9.0-pl

  • NEW: Очереди задач. У проекта появились очереди — упорядоченные списки карточек, которые запускаются по одной. Карточка ставится в очередь только из начальной стадии и состоит максимум в одной очереди. Когда задача очереди уходит в финальную стадию, следующая карточка автоматически стартует: движок переводит её штатным способом от имени её автора, поэтому работают обычные права, журнал (канал queue) и события. Карточку, которую двигали вручную, автозапуск не трогает — кандидат берётся только из начальной стадии. Управляет очередями менеджер отдела. В интерфейсе: вкладка «Структура → Очереди», кнопка «В очередь» в карточке (диалог выбора появляется, только если очередей несколько) и кнопка «Очереди» на доске — модальное окно со списком очередей, перетаскиванием порядка и пометкой «Следующая» у первой ожидающей задачи. Очереди доступны и через REST, и через MCP.
  • NEW: Справочник приоритетов. Приоритет задачи перестал быть «магическим числом», зашитым в интерфейс: теперь это отдельный справочник (вкладка «Структура → Приоритеты»). Справочник глобальный, у каждого приоритета есть числовое значение, название и цвет; цвет применяется к бейджу приоритета на доске и в карточке. Значение числа и название уникальны, последний приоритет удалить нельзя. При установке заводится базовый набор 0–3 (Низкий / Обычный / Высокий / Критический). Значение вне справочника отклоняется ошибкой поля и в REST, и в MCP (раньше молча приводилось к целому); в MCP task_create/task_update приоритет объявлен списком допустимых значений с подписями.
  • CHANGE: Лимит обоснования при оспаривании дедлайна и плановой трудоёмкости поднят с 255 до 1000 символов. Поле журнала это позволяет, искусственная обрезка убрана; интерфейс показывает лимит через maxlength, живой счётчик и подсказку, а хвост сверх лимита обрезается заметно, а не молча.
  • CHANGE: Разрешение спора по дедлайну и по плану переехало в одну кнопку «Решить» в строке значения — она открывает модальное окно, где видно причину оспаривания и доступны действия «Принять»/«Отклонить». Блок решения по плану встал сразу под строкой «План» (был после строки «Факт», к которому отношения не имеет).
  • CHANGE: Все модальные окна пакета закрываются кликом по затемнению вокруг них. Форма новой задачи при этом защищена от потери ввода: если поля заполнены, закрытие (по затемнению, Esc, крестику или «Отмене») спрашивает подтверждение; пустая форма закрывается сразу.

2.8.1-pl

  • FIX: События mxbOnPlanDispute и mxbOnPlanResolve регистрируются в MODX. Ядро дёргало их при оспаривании и разрешении плановой трудоёмкости с версии 2.8.0, но в поставке пакета их не было, поэтому в редакторе плагина эти события не выбирались и повесить на них обработчик было нельзя. Остальные события не затронуты; при обновлении список событий обновляется автоматически.
  • DOC: В readme пакета перечислены все события интеграции — раньше список обрывался на mxbOnTaskComment и не упоминал mxbOnTaskUpdate, mxbOnTaskDelete и события оспаривания дедлайна и плана.

2.8.0-pl

  • NEW: Учёт времени в задачах. Автор может задать плановую трудоёмкость plan_hours в целых часах — поле необязательное, 0 значит «не оценивали». Исполнитель план не правит, а оспаривает тем же механизмом, что и дедлайн (plan_disputed/plan_proposed, MCP task_dispute_plan/task_resolve_plan, REST dispute-plan/resolve-plan). Факт отдельным полем не хранится: он считается от входа в стадию с новым флагом «Стартовая» (is_start) до закрытия задачи; возврат левее стартовой стадии обнуляет замер. В коробочном наборе стартовая стадия — to_start. Внимание: на обновлении существующей установки флаг не проставляется автоматически (резолвер не трогает настроенные стадии) — отметьте стартовую стадию в «Структуре» сами, иначе замер не ведётся.
  • NEW: Живое обновление интерфейса. Поверх того же SSE-соединения пошёл второй тип событий board-event из журнала mxboard_log: открытая доска тихо перечитывает текущий проект, а открытая карточка — свои данные и чат, без ручной перезагрузки страницы. Live-refresh не сбрасывает выбранный отдел/проект, фильтры, набранный комментарий, выбранные файлы и режим редактирования. Курсор SSE стал составным (n{notification_id}:l{log_id}), потому что уведомления и журнал живут в разных id-пространствах; старый числовой курсор понимается по-прежнему.
  • NEW: Правка и удаление комментария пишутся в журнал (comment_update, comment_delete). Раньше эти действия не попадали в mxboard_log, поэтому их не видели ни лента /events, ни живое обновление UI.
  • CHANGE: Настройка mxboard.group_admin_authority по умолчанию равна 1, а не 0. Порог — это authority роли в группе отдела: 1 означает, что менеджером отдела считается участник с ролью верхнего уровня, и для управления отделом больше не нужен глобальный Super User. Значение 0 по-прежнему полностью выключает механизм. На обновлении настройки не перезаписываются — если нужен новый дефолт на уже установленном сайте, выставьте 1 в системных настройках вручную.
  • FIX: Подзадачу больше нельзя создать у родителя, который стоит в финальной стадии (mxboard_err_parent_final). Проверка живёт в общем сервисе, поэтому одинаково работает в менеджере, REST и MCP; ключ стадии не захардкожен — учитывается флаг is_final. В карточке подзадачи ссылка на родителя переехала в мета-блок и показывает «номер · заголовок», а у финальной задачи кнопка создания подзадачи заблокирована.
  • FIX: Системные настройки namespace mxboard показывали ключи лексикона вместо подписей и описаний. Добавлены ключи setting_mxboard.*, setting_mxboard.*_desc и area_mxboard_* в русский и английский словари.
  • FIX: Длинный заголовок карточки на доске больше не залезает под кнопку удаления — заголовок резервирует место справа, когда кнопка показана.

2.7.1-pl

  • FIX: MCP task_update теперь применяет fields как частичный патч: непереданные ключи сохраняются, поэтому обновление одного поля не падает на уже заполненных обязательных полях типа. При одновременной смене type поля по-прежнему считаются полным набором для новой схемы.
  • FIX: Неизвестные ключи fields теперь отклоняются валидационной ошибкой, а не молча игнорируются с ответом «обновлено».
  • TEST: In-process API/MCP smoke получил регрессию на частичный fields patch, полный update с fields, ошибку пустого/неизвестного поля и неизменность REST-контракта.

2.7.0-pl

  • CHANGE: Стартовый набор стадий приведён к рабочему циклу с агентом-исполнителем: шесть стадий вместо восьми — backlog, to_start, plan, in_progress, review, done. Стадия confirm убрана как дублирующая: согласование плана выражается комментариями на plan, а разрешением реализовывать — переводом в in_progress. Стадия cancel убрана как бесполезная: отложенную задачу возвращают в backlog, ненужную удаляют.
  • CHANGE: Права переходов приведены к фактическому циклу. in_progress двигает автор (перевод = «план принят, можно реализовывать»), review двигает исполнитель (перевод = «работа сдана»). Раньше эти две стадии стояли зеркально.
  • NEW: Стадии стартового набора идут с описаниями: каждая объясняет тому, чей ход наступил, что от него ожидается и куда двигать карточку дальше.
  • FIX: Резолвер больше не перезаписывает position и move_roles у уже существующих колонок — только создаёт недостающие. До 2.7.0 установка обновления затирала настроенные вручную стадии и права переходов.

2.6.0-pl

  • NEW: У стадий/колонок появилось необязательное описание (description). Поле сохраняется через общий StructureService и доступно во всех каналах: UI редактора стадий, manager connector, REST и MCP.
  • NEW: REST получил публичные manager-эндпоинты для стадий: POST /projects/{id}/columns и PATCH /columns/{id}. MCP получил manager-tools stage_create и stage_update; stage_list и board_list показывают описание, если оно заполнено.
  • BUILD: Схема и upgrade-resolver добавляют mxboard_column.description как TEXT NULL, поэтому существующие установки обновляются без обязательного заполнения.

2.5.0-pl

  • NEW: Состав типов задач и их полей объявлен в одном месте — core/components/mxboard/schema/task-types.php. Раньше список был продублирован в резолвере пакета и в стендовом сиде, и два независимых списка предсказуемо разъехались: резолвер не знал ни про environment/severity у багфикса, ни про select вообще. Теперь оба читают общий файл.
  • NEW: Стартовый сид пакета ставит полный набор полей. Чистая установка получает багфикс с окружением и severity (список critical/major/minor/cosmetic), фичу с описанием реализации, контекстами и зависимостями, ресёрч с промтом и форматом результата — а не прежний огрызок из четырёх полей. Доменные типы менеджерского процесса (акции и цены, SEO, вёрстка) в поставку намеренно НЕ входят: это стандарт конкретного отдела, а не функциональность доски.
  • FIX: Убран мёртвый тип поля file. Его нет в StructureService::FIELD_TYPES — создать такое поле через API нельзя, поэтому ветки рендера в форме задачи и в карточке были недостижимы. Актуальный файловый тип — files; единый ключ вложений во всех типах — attachments.

2.4.2-pl

  • FIX: В «Структуре» список полей типа задачи раскрывается прямо под своим типом. Раньше панель полей рендерилась одним блоком под всей таблицей — какому именно типу принадлежит открытый список, по виду было не понять. Теперь это строка-расширение таблицы: раскрытие привязано к строке, у типа появился треугольник-раскрывашка.
  • FIX: Рабочая область «Структуры» получила собственную прокрутку. Фрейм менеджера MODX страницу не прокручивает, поэтому длинная таблица типов (особенно с раскрытым списком полей) уходила под нижний край экрана без возможности до неё доскроллить.

2.4.1-pl

  • NEW: Стадия «Старт» (to_start) между «Бэклогом» и «Планом» — ручной гейт запуска исполнителя. Постановка вызревает в бэклоге, и только автор (move_roles=author) открывает работу переводом карточки в «Старт». Это важно, когда исполнитель — ИИ-агент: внешняя автоматизация будит его строго с этой стадии, а не в момент создания задачи, поэтому можно готовить и согласовывать постановку заранее, а старт назначать отдельно. Второй гейт («Согласование») остаётся: реализация начинается только после одобрения плана. Добавлена также тупиковая стадия «Отменена» (cancel) — не финальная, закрытием считается только «Готово». Резолвер теперь подтягивает position и move_roles у уже существующих колонок, иначе при вставке стадии в середину набора порядок на доске разъезжается.
  • NEW: Тип поля «Список» (select) заработал с обоих концов: в форме поля появился редактор вариантов (через |), а в карточке задачи такое поле рендерится выпадающим списком. Раньше select можно было выбрать в интерфейсе, но вариантов задать было негде, и поле показывалось обычным текстовым вводом.
  • NEW: Тип задачи «Ресёрч» (research) в поставке — изучить вопрос и вернуть ответ.
  • FIX: Поле типа без явного type больше не отваливается с «Недопустимый тип поля». Значение по умолчанию — text — отсутствовало в списке разрешённых типов, то есть дефолт заведомо не проходил собственную валидацию (StructureService::FIELD_TYPES).
  • FIX: options поля не сохранялись из интерфейса — ключ отсутствовал в белом списке свойств процессоров Field/Create и Field/Update (та же ловушка, что с color у колонки).
  • CHANGE: REST GET /events отдаёт task_stage — ключ текущей стадии карточки. У события move стадия видна по from/to, но у create и comment её не было вовсе, и внешняя автоматизация не могла решить, стоит ли будить исполнителя.
  • CHANGE: MCP type_create описывает фактический список типов поля (text|textarea|url|number|date|select|user|files) — раньше рекламировался несуществующий file и умалчивались text и select.

2.4.0-pl

  • BUILD: Первый публичный релиз на modstore. Документация — docs.modx.pro/components/mxboard, исходники — github.com/ShevArtV/mxboard, лицензия MIT.
  • NEW: Иконка удаления (корзина) в правом верхнем углу карточки на доске — можно удалить задачу, не открывая её. Появляется на наведении (на тач-экранах видна всегда), спрашивает подтверждение у самой кнопки. Видна только тому, кто вправе удалить (автор или менеджер); права всё равно проверяет сервер (TaskService::delete).
  • CHANGE: Доска по умолчанию заточена под работу с агентами — шесть стадий вместо четырёх: backlog → plan → confirm → in_progress → review → done. Исполнитель выносит план работ в «План» (move_roles=assignee), и только автор одобряет его переводом в «Подтверждение» (move_roles=author); не согласен — комментирует, стадию не меняет. Дальше как раньше: in_progress/review — исполнитель, done (final) — только автор. Backlog больше не принимает возврат рядовыми ролями (move_roles пуст — откат только менеджером). Изменения в резолвере 02.resolve.board.php (глобальный шаблон колонок и проект default). Логика переходов на ключи колонок не завязана (работает через is_initial/is_final), существующие установки резолвер не трогает — новая раскладка применяется на чистой установке.
  • FIX: move_roles больше не поддерживает роль any: рядовой участник доски не должен двигать карточку только по факту доступа. Менеджерский обход остаётся отдельной проверкой (sudo или супер-пользователь группы отдела).
  • NEW: Кнопка «Сбросить к дефолтным» в редакторе стадий (Структура) — удаляет собственные колонки проекта и возвращает его на глобальный шаблон. Сам шаблон (project_id=0) сбросить нельзя. Задачи не осиротеют: сервис в транзакции переносит карточки на одноимённую (по key) колонку шаблона, а несовпавшие ключи — на стартовую (is_initial) стадию.
  • CHANGE: Редактор стадий у проекта без своих колонок больше не показывает read-only список дефолтов — вместо него плашка «Своих колонок нет — используются дефолтные» с подсказкой скопировать шаблон. На канбане дефолты остаются как fallback (задачи физически стоят в стадиях шаблона — иначе их негде показать).
  • FIX: Колокольчик уведомлений больше не «выпадает» из белой полосы табов на серый фон. Фон и нижняя граница перенесены с TabList на весь ряд .mxb-tabbar — полоса читается единой белой поверхностью, включая зону колокольчика справа.

2.3.0-alpha

  • NEW: In-app уведомления в админке через SSE (Server-Sent Events). Колокольчик со счётчиком непрочитанных в шапке доски + всплывающие тосты. Событие жизненного цикла задачи (создание, смена стадии, комментарий, оспаривание/решение дедлайна) пишется в очередь mxboard_notification на участников задачи (автор+исполнитель) за вычетом того, кто действие совершил. Поток читает эндпоинт assets/components/mxboard/sse.php через нативный EventSource (авторизация по mgr-куке; соединение короткое, докачка по Last-Event-ID). Клик по уведомлению открывает задачу. Настройки: mxboard.sse_enabled (вкл/выкл фичу целиком), mxboard.sse_lifetime (сек), mxboard.sse_poll_interval (сек). Новая таблица mxboard_notification.
  • NEW: REST-эндпоинт GET /events?since={log_id}&limit= — инкрементальная лента журнала с курсором по id, обогащённая полями задачи (num/title/project/автор/исполнитель) и именем актора. Только менеджеру отдела. Точка интеграции для внешних потребителей (напр. локальный поллер, дёргающий агентов через Jarvis).

2.2.0-alpha

  • NEW: Киоск-доступ «только канбан». При установке создаётся политика доступа «mxBoard Only» (whitelist поверх AdministratorTemplate: frames, load, list, view, home, components, logout) — назначьте её группе-отделу через «Доступ к контексту mgr», и её рядовые члены увидят в менеджере только доску (без деревьев ресурсов/элементов/ файлов и прочих разделов). Права урезаются политикой, поэтому «видно кнопку» не значит «есть доступ». Политика создаётся один раз и никому не назначается автоматически.
  • NEW: Плагин mxBoardKiosk (OnManagerPageInit) + настройка mxboard.kiosk_usergroups (CSV имён групп): рядового члена такой группы при входе редиректит сразу на канбан. По умолчанию пусто — никого не трогает (opt-in). Sudo не запирается.

2.1.0-alpha

  • UX: Поле «кто может двигать карточку в колонку» — вместо ручного CSV теперь радио: Автор и исполнитель / Только автор / Только исполнитель (в БД по-прежнему move_roles).
  • FIX: Канбан не помещал длинные колонки — нижние карточки уходили под низ фрейма менеджера без прокрутки. Колонка теперь ограничена высотой вьюпорта, карточки скроллятся внутри колонки (шапка стадии остаётся на месте).
  • FIX: Реактивная синхронизация вкладок «Структура» и канбана без перезагрузки страницы: новый проект сразу доступен во вкладке «Колонки»; изменение состава/порядка/цвета колонок отражается на доске автоматически (лёгкая шина ревизий utils/bus.js).
  • CHANGE: Проекты больше не копируют колонки автоматически при создании. Проект без своих колонок показывает дефолтный шаблон (project_id=0) только для чтения (fallback на доске, в stage_list и при создании задач).
  • NEW: Ручное копирование колонок в проект (кнопка «Копировать колонки») из другого проекта того же отдела или дефолтного шаблона; если источник один — без диалога. Доступно только пока в проекте нет ни одной задачи (процессор Column/Copy, Column/Sources).
  • NEW: Переупорядочивание колонок drag-n-drop в редакторе стадий (процессор Column/Reorder).
  • NEW: Человекочитаемый номер задачи num (напр. 2607-15) — уникальный адрес наравне с id; MCP/REST (task_get/move/update/... и /tasks/{num}) принимают id ИЛИ num. Формат в настройке mxboard.task_num_format (по умолчанию {y}{m}-{num}); счётчик атомарный по периоду (таблица mxboard_counter), устойчив к удалению задач. Существующим задачам num проставляется бэкофиллом при обновлении.
  • CHANGE: Убрано неиспользуемое поле колонки stage_key (тег стадии) из схемы, API и UI.
  • FIX: При клонировании колонок из шаблона терялся цвет (color) — теперь переносится.

1.0.0-alpha

  • NEW: Канбан-доска для ИИ-агентов. Доски, настраиваемые колонки, карточки с ToR (markdown).
  • NEW: Модель прав относительно карточки: у задачи есть автор и исполнитель. Право перехода задаётся на колонке (move_roles: author / assignee / group:Name). В финальную колонку (done) переводит только автор задачи.
  • NEW: Атомарный захват задачи (UPDATE ... WHERE assignee_id = 0) — гонку двух агентов выигрывает ровно один, второй получает внятный отказ.
  • NEW: Настройка mxboard.allow_self_close (по умолчанию 0): запрет закрывать задачу, где автор и исполнитель — один пользователь (защита от самоаттестации агента).
  • NEW: MCP-эндпоинт (JSON-RPC 2.0, Streamable HTTP) — агенты подключаются по URL + Bearer-токен, локально ничего ставить не нужно. Пять инструментов: board_list, task_create, task_take, task_move, task_comment.
  • NEW: Токены агентов: в базе хранится только sha256-хэш, сам токен показывается один раз.
  • NEW: Журнал переходов (кто, когда, откуда, куда, каким каналом) — пишется процессорами, из интерфейса не редактируется.
  • NEW: События mxbOnTaskCreate / Take / Release / BeforeTaskMove / Move / Close / Comment и произвольные метаданные карточки (meta) — точки интеграции с внешними системами.
  • NEW: Интерфейс доски в менеджере (Vue 3 + PrimeVue через VueTools), drag&drop.

Последние обсуждения в сообществе MODX.pro