Skip to content

v0.3.8

Choose a tag to compare

@Macegor Macegor released this 26 May 19:05
· 14 commits to main since this release

Главный фокус — кроссплатформенность (Windows), исправления работы с хранилищем и MCP, плюс ощутимый прирост производительности на больших конфигурациях.

Кроссплатформенность

Регистрация информационных баз на Windows

  • Добавлен обход вложенных 1cestart.cfg через директиву CommonCfgLocation (раньше читался только корневой файл).
  • Поддержка устаревшего пути %ALLUSERSPROFILE%\Application Data\1C\1CEStart\ (Windows XP-стиль) — на корпоративных машинах этот путь до сих пор встречается.
  • Чтение .cfg с автодетектом кодировки: UTF-8 с BOM, UTF-16 LE, fallback на windows-1251 при невалидных байтах.
  • getEnvironmentVariable теперь работает case-insensitive — process.env.APPDATA vs process.env.appdata больше не теряются.
  • Корректное разрешение mixed-style путей: если 1cestart.cfg содержит C:\…\common.v8i, путь резолвится через path.win32 независимо от платформы драйвера.

Импорт конфигурации на Windows

  • fs.renameSync при импорте/обновлении больше не падает из-за блокировок файловых дескрипторов антивирусом, file watcher'ами VS Code и индексатором Windows — обрабатываются EPERM/EACCES/EBUSY в дополнение к EXDEV, операция корректно откатывается на per-file копирование.
  • Безопасный откат: если восстановление из бэкапа после сбоя само упало, исходная ошибка пробрасывается без потери резервной копии.

Тёмная тема Windows

  • Иконки метаданных в универсальной панели больше не оставались светлыми в тёмной теме на Windows. Механизм <picture media="prefers-color-scheme"> заменён на штатный для VS Code селектор body.vscode-dark с CSS-переменными --icon-light / --icon-dark. Теперь иконки переключаются вместе с темой VS Code, а не с темой ОС.

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

Хранилище конфигурации

Полная переработка RepositoryCommandRunner:

  • Команды хранилища исполняются напрямую через DESIGNER 1cv8.exe, а не через прослойку CLI на Node — устранены ложные срабатывания, связанные с разрешением process.execPath.
  • Сборка аргументов командной строки разнесена на appendConnectionDesignerArgs / appendRepositoryDesignerArgs / buildCommandDesignerArgs — каждая группа аргументов тестируется отдельно.
  • Чтение /Out-лога с автодетектом кодировки (pickMostReadableText для UTF-8/UTF-16/win1251), лог пишется во временный каталог и попадает в Output-канал при ошибке.

MCP: контракты свойств и подсистем

  • Полный контракт свойств для регламентных заданий (ScheduledJob) и штатное создание объекта через MCP.
  • Нормализация MethodName регламентного задания в канонический формат CommonModule.Модуль.Метод.
  • Запрет на простую запись типизированных XML-значений через set_property — теперь MCP-клиент получает осмысленную ошибку вместо порчи XML.
  • Точечный MCP-инструмент изменения состава подсистем (раньше требовался полный перезапис подсистемы).
  • Свойства штатно создаваемых объектов и дочерних элементов теперь возвращаются полностью.

Универсальная панель

  • openNodeIds/loadingNodeIds: реактивные Set<string> заменены на иммутабельный Record<string, true>. Раскрытие узла больше не вызывает двойной ре-рендер всего дерева; Vue трекает только конкретный ключ, а не «весь Set».
  • O(1) поиск узла через nodeIndex: Map, перестраиваемую в watchEffect — раньше каждый клик по контекстному меню запускал рекурсивный обход дерева.
  • Постоянный поллинг статуса автономного сервера (каждые 2 с) заменён на burst-режим: 1 запрос в секунду на 8 секунд после команды управления сервером.
  • Утечка setTimeout в дебаунсе поиска при размонтировании панели — исправлена.

Контекстное меню

  • Smart-позиционирование: меню больше не уходит за границы viewport, при необходимости поднимается выше точки клика или прижимается к краю.
  • Авто-max-height для длинных меню — содержимое прокручивается, а не обрезается.
  • Добавлена поддержка текстовых макетов (kind = TextDocument) — открываются в редакторе как обычный текст.

Макеты с табличной частью

  • Дочерние макеты, объявленные внутри табличной части справочника/документа, корректно отображаются в дереве (раньше пропадали из-за неверного разрешения owner-узла).

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

Под капотом MCP и универсальной панели:

  • Batch git-статус: один вызов git status --porcelain --untracked-files=all прогревает карту для всего workspace вместо per-file проверок. На Windows один spawn git стоит 50–200 мс — на 1000+ объектов дерева это давало секунды задержки при первом раскрытии.
  • LRU-кэш parseObjectXml по (xmlPath, mtimeMs) ёмкостью 500 — в одной MCP-транзакции один XML парсился по 2–3 раза (path resolver → metadata info → update property), теперь — один раз.
  • Точечная инвалидация кэша git/XML после мутаций вместо полного сброса.

Другие улучшения

  • MCP-доработка: новый сервис CanonicalNames для канонических имён метаданных, PlatformTypeRegistry, новые батчевые инструменты, документация docs/mcp-paths.md.
  • Инструменты форм и ролей: декомпозиция RoleRightsService (999 → 6 файлов: RoleCompileService, RoleInfoService, RoleRightsEditService, RoleValidateService, RoleRightsXml, RoleDefaultRolesService) и FormToolsService на отдельные сервисы.
  • Интеграция с Claude: доработан AiSkillsInstaller, добавлены тесты установки скиллов.
  • BSL: обрамление и форматирование диапазона: расширены команды Surround (Окружить → Если/Иначе/Попытка/Пока/Для каждого/Процедура/Функция/Область), добавлена интеграция с range-formatter LSP.

Совместимость

Без миграционных шагов. Реестр баз 1С и кэш git/XML прогреваются автоматически при первом запуске.