Unica 0.9.1: безопаснее меняем код, формы и метаданные 1С
Выпустили Unica 0.9.1 — крупное обновление, в которое вошли 32 pull request.
Главная тема релиза — безопасное изменение существующего проекта 1С. Unica теперь строже проверяет исходное состояние файлов, структуру BSL и XML, блокирует конфликтующие операции и не публикует сомнительный результат.
🛠 Точечное изменение BSL
Новый инструмент unica.code.patch позволяет вставлять код в существующий BSL-модуль по методу или точному ориентиру.
Перед публикацией Unica:
— проверяет структуру через bsl-analyzer;
— поддерживает предварительный просмотр через dry-run;
— защищает от изменения файла между чтением и записью;
— возвращает структурированный результат операции.
Это основа для более надёжной работы AI-агентов с реальными конфигурациями, где недостаточно просто заменить фрагмент текста.
🧩 Удаление элементов управляемых форм
unica.form.edit получил операцию removeElements.
Она удаляет выбранное поддерево формы вместе со связанными узлами, проверяет оставшиеся ссылки и останавливает публикацию при конфликте. Теперь агент может не только добавлять и изменять элементы формы, но и безопасно удалять их.
📦 Единый профиль исходников 1С
Все поддерживаемые XML-мутаторы переведены на профиль:
1С 8.3.27 / формат выгрузки 2.20
Перед изменением проверяются версия исходников и владелец объекта. Это уменьшает риск записать XML, который формально выглядит корректным, но несовместим с конкретной выгрузкой конфигурации.
Также в релизе:
— ограниченный по времени запуск внешних EPF с реальным exit code и раздельными stdout/stderr;
— поддержка LineNumberLength для табличных частей;
— исправление восстановления RLM-индекса после изменения содержимого;
— корректная привязка диагностики к выбранному worktree;
— bsl-analyzer 0.2.62 с поддержкой анализа расширений;
— обновление v8-runner и инфраструктуры поставки внешних инструментов;
— новые UX-рекомендации для форм и соглашения по проектированию метаданных.
⚠️ Изменение публичного API
Домен СКД переименован в официальный английский термин DCS:
unica.skd.* → unica.dcs.*
skd-* → dcs-*
Старые псевдонимы не сохранены.
❤️ Спасибо контрибьюторам
[@korolevpavel](https://github.com/korolevpavel) — за механизм атомарной публикации одного файла и первый публичный unica.code.patch.
[@Agrajaga](https://github.com/Agrajaga) — за восстановление публичного контракта диагностики для worktree и глубокое исправление восстановления RLM-индекса.
[@Oxotka](https://github.com/Oxotka) — за адаптацию UX-рекомендаций 1C Design Guide и соглашения по проектированию метаданных.
[@zeegin](https://github.com/zeegin) — за интеграцию релиза, профиль 1С 8.3.27, переход на DCS, EPF runtime, удаление элементов форм, обновление analyzer/toolchain и развитие CI.
Обновление:
codex plugin marketplace upgrade unica
codex plugin remove unica@unica
codex plugin add unica@unica
🔗 [Релиз Unica 0.9.1](https://github.com/IngvarConsulting/unica/releases/tag/v0.9.1)
🔗 [Полный список изменений](https://github.com/IngvarConsulting/unica/compare/v0.8.1...v0.9.1)