Что нового
Изменения последних версий SXL Studio простыми словами и таблица совместимости плагина с Bridge, Transformer, Resolver и Storybook Addon.
Номер установленной версии плагина виден на вкладке Tokens внизу пустой рабочей области и в первой строке вкладки Diagnostics. Плагин обновляется через Figma Community автоматически.
Совместимость
| Компонент | Версия | Где взять |
|---|---|---|
| Плагин SXL Studio | 2.9.4 | Figma Community |
| SXL Bridge | 1.9.0 | npm i -g @sxl-studio/bridge, см. Утилита Bridge |
| Transformer | 3.4.1 | npm i -g @sxl-studio/token-transformer, см. Transformer |
| Resolver для VS Code | 2.3.4 | Маркетплейс VS Code, см. Resolver |
| Storybook Addon | 2.0.2 | npm, см. Storybook Addon |
Плагин 2.9.x работает с Bridge 1.10.0. Если Bridge старее, обновите его: Local Workspace и Local Storage могут не открыться.
Transformer: сохранение токенов
Начиная с Transformer 3.4.0, команда sync --preserve-existing сохраняет ранее сгенерированные токены после удаления JSON, обновляет совпавшие и добавляет новые во всех форматах. В 3.4.1 дополнительно стабилизированы повторные запуски force и XML preserve, уточнены записи smart и исправлено экранирование текста. Preserve включается только флагом команды; примеры smart, force и preserve приведены в документации Transformer.
Утилиты вместе с 2.9.3
- Bridge 1.9.0: надёжнее установка через npm, рабочие команды справки/версии и понятная диагностика установленного пакета.
- Transformer 3.3.1: улучшена обработка объектов DTCG, градиентов, составных ссылок, URL изображений и easing; исправлены повторная генерация SCSS и однократная пересборка после обновления. Ограничения платформ явно отражаются в диагностике; см. Transformer.
2.9.5
-
Адаптивные варианты: STRING-токены в
ref.properties, в том числе экспортированные в другой файл рабочей области (библиотека Core → файл компонентов): переменная импортируется по опубликованному ключу. Исходный вариант выбирается по режиму места размещения; неиспользуемые режимы переменной не мешают привязке, проверяется активное значение инстанса. -
Миграция матрицы вариантов: изменение числа вариантов и осей обновляет существующий ComponentSet на месте с сохранением идентификаторов; экземпляры удаляемых вариантов переводятся на сохраняемые нативной заменой с сохранением переопределений; опубликованные варианты и удалённые значения осей требуют явной карты
variantMigration. -
Неразрешённые ссылки: результат становится ошибкой с первичной причиной, текущий слой сохраняет идентификатор без каскадных ошибок и повторных заглушек, а после исправления ссылки Apply приводит его к JSON.
-
Grid и перенос строк в композициях целиком: сетка Figma со всеми настройками — число колонок и строк, дорожки
fr/px/hug (в том числеrepeat(7, 1fr)), отступы, автопозиционирование (gridAutoFlow,gridAutoRows), явное размещение инстансов по ячейкам (gridRow,gridColumn, span, выравнивание); перенос строк сwrapGap: "auto"иspace-evenly/space-around. Удалённые из JSON ключи сетки и переноса сбрасываются при Apply, несовпадение числа дорожек и колонок — ошибка авторства с исправлением. -
Hover без сдвига соседей: добавлен рецепт независимого увеличения всей карточки в Auto Layout и Grid: фиксированная ячейка сохраняет место и min/max-переменные, внутренний слой сохраняет пропорции. Это явная структура композиции, а не автоматическая обёртка.
-
Пропорции и ограничения размеров: масштабирование учитывает min/max переменные; замок в JSON с разными переменными на двух сторонах одной пары (
width/height,minWidth/minHeight,maxWidth/maxHeight) — ошибка авторства с указанием слоя, пары и исправления до любых изменений; один токен на обеих сторонах пары и переменные в разных парах допустимы; замок с канваса (унаследованный или ручной) даёт предупреждениеaspect-lock-settled; сбой стиля корня не оставляет вариант пустым. Исправлен сброс явно включённогоconstrainProportionsу FRAME. -
Восстановление управляемых привязок в Smart: поддерживаемые прямые связи с переменными проверяются и без изменения соответствующего JSON-блока. Ручное содержимое слотов и унаследованные слои инстансов сохраняются.
-
Масштаб инстансов из JSON: абсолютный
scaleдля явно объявленныхINSTANCEиICON, включая default-инстанс нативного слота. Повторный Apply не накапливает масштаб; удаление значения возвращает масштаб к единице. Поддерживаемые сочетания и ограничения описаны в Composition. -
Привязка размера текста:
fontSizeсохраняет числовую переменную после записи размера; ошибка привязки попадает в диагностику. Стиль любого вида (текстовый, заливка, градиент, тень, blur, сетка), экспортированный раньше своих переменных, получает литерал и замечание по каждому полю с подсказкой; после экспорта зависимостей обычный повторный экспорт восстанавливает привязки без Force update all, сохраняя ID стиля. -
Прозрачность и blend mode слоя с цветом по переменной: слой заливки со ссылкой на цветовую переменную и своей
opacityполучает прозрачность уже при первом экспорте — Figma сбрасывала её при создании стиля, и значение появлялось только после второго экспорта. Blend mode у такого слоя Figma не хранит: экспорт оставляетNORMALи сообщает замечанием; чтобы сохранить blend mode, задайте цвет слоя литералом. -
Local Workspace и сохранения в редакторе (Bridge 1.10.0): после записи плагина в файл Bridge мог перестать замечать последующие сохранения этого же файла в редакторе до перезапуска. Ожидание завершения записи теперь выполняет сам Bridge, и мгновенное отсутствие файла во время журналируемой замены его не сбивает.
-
Три статуса результата и Auto-fix: успех, предупреждение с рекомендациями по пунктам и ошибка с перечнем исправлений; кнопки Repair и Auto-fix прямо в уведомлении (повторная привязка вариантов, ожидание Local Workspace, Repair, затем Smart). Bridge 1.10.0 возвращает
status,diagnostics(сdetailsиfixes),suggestedAction; командыauto_fix_compositionиreload_local_workspace;get_plugin_statusпоказывает состояние Local Workspace. Замечания и ошибки во всех уведомлениях — композиции, экспорт переменных и стилей, Apply Tokens, Apply Data — оформлены единым списком: значок серьёзности, сначала ошибки; длинное сообщение разобрано на заголовок и строки «что не так», шаги исправления — отдельными стрелками, свойства и токены выделены, общий набор шагов показан один раз над списком; счёт «N errors · M notices», Show N more для длинных списков. Apply Data перечисляет пропущенные поля с причиной и исправлением вместо «Applied to 0 layers». -
Редактирование активного профиля Local Workspace: имя и папки активного профиля меняются без деактивации — кнопка Save and reopen сохраняет профиль и заново открывает рабочую область из новых папок; несохранённый черновик редактора или конфликт с диском останавливают сохранение с объяснением; удаление активного профиля по-прежнему требует Use Plugin Local. Рядом с полями корня, tokens и data — кнопка выбора папки через системный диалог (нужен Bridge 1.10.0); папки tokens и data должны лежать внутри Git-корня.
-
Local Workspace без незавершённых операций: ожидание перезагрузки рабочей области перед записью и повтор записи трекинга после изменения канваса; изменение файла на диске во время операции применяется в её точке ожидания, а конфликт несохранённого черновика с диском остаётся решением пользователя.
-
Привязка переменной к VARIANT при вариантных
ref: блокrefвнутри$prop=value-секции стилей меняет только названные свойства вложенного инстанса; привязки{token}из структурногоref(например_breakpoint: "{breakpoint}") сохраняются, а после всех стадий Apply каждая такая привязка проверяется: потеря становится ошибкой, а не успехом. -
Смена вида слоя FRAME ↔ SLOT: Apply меняет тег существующего слоя на месте: на одиночном компоненте создаётся нативный слот, в наборе вариантов — свойство SLOT со связанными слоями; обратная смена снимает свойство без пересоздания узлов.
-
Литеральные свойства ссылок в Smart: Smart Apply сверяет текстовые, логические и вариантные значения
ref.propertiesвложенных инстансов с живыми и переприменяет разошедшиеся, например после переименования свойства в компоненте-источнике. -
INSTANCE_SWAP и вариантные ссылки: значение по умолчанию берётся из JSON; вариантная замена компонента на привязанном слое сообщается предупреждением, а аудит понимает вариантные замены на обычных слоях.
-
Надёжнее Generate и Apply: исправлены выбор целевой страницы, добавление и переименование нативных слотов, привязка существующих слотов и обработка отмены. Незавершённая операция не получает отметку об успешном обновлении.
2.9.4
- Настройки нативных слотов из JSON: описание, предпочтительные компоненты, минимальное и максимальное число слоёв, отображение пустого слота и настройка растягивания при вставке. Ограничения количества слоёв рекомендательные и не удаляют существующее содержимое.
- Переименование свойства слота через Apply: изменение имени в
componentPropertiesпри прежнемlayerсохраняет идентификатор свойства, привязку и содержимое слота. Неизменённый JSON сохраняет ручное имя в Figma. Для композиций из предыдущих версий сначала выполните Apply с прежним JSON, затем меняйте имя. См. Настройки слотов. - Default-содержимое слотов по вариантам: Generate и Apply учитывают компонент, его свойства и стили для каждого варианта родителя. Можно задать default-компонент и во вложенном нативном слоте. Ручные замены, изменённые свойства, скрытое и намеренно пустое содержимое защищены от перезаписи.
- Точнее выбор компонентов: ключ опубликованного набора выбирает нужный вариант; поиск по имени больше не подставляет компонент только из-за совпадения части имени. При разрешении ссылки точное локальное имя имеет приоритет. Если default слота уже создан через другое совпадение имени, используйте Repair для повторного разрешения ссылки. Явные
keyиlibraryсохраняют приоритет и ограничения источника. - Восстановление потерянных связей: Apply может перепривязать существующий инстанс с удалённым локальным мастером к единственному подтверждённому компоненту из того же JSON-источника. При неоднозначности или неподтверждённой сохранности ручного содержимого плагин сообщает о проблеме.
- Прозрачность по ссылке в цветовых выражениях: поддерживаемые
rgb,rgba,hsl,hsla,lch,oklchиcolor(...)могут сохранять ссылку на токен прозрачности без обязательногоfigma.modify. Для нативной связи прозрачности цвет по ссылке должен быть непрозрачным. Если Figma не поддерживает нужную связь, экспорт сохраняет вычисленный цвет и сообщает об ограничении. - Изображения в JSON композиций: Get Code встраивает PNG, JPEG и GIF, сохраняет обрезку, отражение, скрытые слои и порядок поддерживаемых эффектов. Generate и Apply читают встроенные изображения; недоступный источник вызывает ошибку и сохраняет прежние заливки. GLASS зависит от доступности эффекта в Figma и поддерживается без привязок переменных.
- Надёжнее Apply и Get Code: сохраняются привязки и настройки слотов, описания, предпочтительные компоненты и пустые слоты. Ошибки привязки свойств и неполные обновления больше не считаются успешным применением. Недопустимая привязка внешнего свойства к обычному слою внутри слота диагностируется до изменения структуры.
- Local Workspace и повторный Apply: генерация и обновление проверяют готовность синхронизации до изменения слоёв. Ошибка сохранения привязок явно сообщается, а повтор с неполным трекингом не создаёт дубликаты существующих вариантов.
- Массовые команды Remote Connect: некорректные запросы отклоняются до начала работы, а Cancel останавливает следующие композиции активного прогона. Уже выполненные изменения сохраняются.
2.9.3
-
Apply может заново создать удалённый обычный корень композиции (
component: false). Недоступное значение по умолчанию свойства замены инстанса вызывает предупреждение, но не помечает весь Apply незавершённым. -
Подписи сетки следуют за перенесённым набором при Apply; старые подписи на другой странице удаляются. Повторный Apply сохраняет неизменные подписи, а ручные изменения текста и оформления исправляются.
-
Повторный Apply в Local Workspace быстрее: данные привязки композиции записываются только при изменении.
-
После сетевого сбоя Local Workspace больше не сообщает об успешном сохранении по старой копии файла. Если результат записи неизвестен, перед следующим сохранением требуется перезагрузить рабочую область.
-
После частично неудачного Apply обработанные варианты сохраняют связь с композицией, а следующий Apply повторяет незавершённую работу. Повторный Apply также сохраняет связи вариантов с их слоями.
-
Apply сохраняет исходную страницу и позицию компонента, в том числе при переходах между одиночным компонентом и набором вариантов. Если страница цели недоступна, Apply останавливается до изменений на канвасе.
-
Композиции учитывают явно указанную библиотеку и ключ опубликованного компонента, в том числе при замене вложенных иконок. Недоступная ссылка вызывает предупреждение вместо молчаливой подстановки локального компонента с тем же именем.
-
Local Workspace: после повторного открытия плагина успешное подключение восстанавливает экспорт и сохранение, даже если первая проверка соединения завершилась ошибкой.
-
В экспорте остался один переключатель Sort для стилей и их папок. Сортировка сохраняет идентификаторы и привязки; настройка пересоздания коллекций убрана. Существующие коллекции, моды и переменные плагины Figma переставлять не могут.
-
Композиции: удаление слоя из JSON надёжно применяется smart Apply. Раньше после структурной правки штамп «нестилевого» хэша набора не обновлялся, и следующий Apply считал удаление слоя стилевой правкой, оставляя слой на канвасе до repair. Быстрый стилевой путь дополнительно сверяет живые слои со структурой. Результат Apply содержит
applyPlan: какой план сработал и почему.ref.nested.<слой>.componentменяет вложенный инстанс, как ручная замена в Figma; переопределения инстансов при Apply сохраняются, id нод не меняются. -
Композиции: свойство INSTANCE_SWAP по умолчанию получает тот вариант, который слой уже показывает (
ref.properties), а не вариант набора по умолчанию, поэтому привязка свойства больше не сбрасываетvariant=secondary. Аудит дрейфа сравнивает хэш композиции с последним Generate/Apply, учитывает переопределенияinstancePropertiesпо вариантам, не считает ручные реакции прототипа дрейфом и понимаетcomponent: false; дляcomponent: falseведётся трекинг в diff-id. Командаget_drift_statusв Bridge отвечает по хэшу, а не всегда «нет дрейфа». -
Композиции: CSS-градиент под углом (
linear-gradient(135deg, …)) на фигуре теперь записывается: стопы приводятся к диапазону Figma сдвигом ручек, раньше Figma отклоняла заливку молча.backgroundBlur/layerBlurпо токену стиля ({blur.bound}→{core.space.md}) получают радиус из цепочки ссылок и привязку к переменной; отказ записи заливки или обводки попадает в предупреждения результата. -
Композиции: заливка по токену стиля (
fill: "{gradient.brand}","{img.logo}","{fill.surface-tinted}") подключает стиль заливки Figma или собирает слои из значения токена;blendModeзадаётся на слое; значения enum-полей из токенов (textCase,textDecoration) переводятся в термины Figma; Apply работает дляcomponent: false; аудиты и поиск использований переменных видят привязки текстовых полей (размер, начертание, интерлиньяж, текст). -
Local Workspace: после смены ветки или коммита в репозитории токенов сессия переоткрывается сама, без Reload. Если в редакторе есть несохранённый черновик, плагин показывает конфликт и ждёт решения.
-
Композиции: Apply больше не стирает реакции прототипа, добавленные вручную, а переписывает только созданные из
transitions; добавленные Apply варианты получают свои переходы, а не копии переходов шаблона; Apply не двигает существующий набор в центр экрана; первый Apply после Adopt не удаляет component properties, созданные дизайнером;paddingмассивом раскладывается по сторонам как CSS;lineHeightиletterSpacingиз токена без переменной Figma записываются корректно. -
Композиции: селектор с условием и классом (
"$variant=secondary .root") принимает вложенные блоки классов, порядок условий и классов в ключе свободный. Раньше такие правила терялись, а вложенный блок попадал в базовые стили. -
Композиции:
visible: "{token}"привязывает булеву переменную; ссылка на вес шрифта из строковой переменной привязывается к полю Font style, из числовой — к Font weight;border: "none"снимает обводку; размеры дорожек сеткиfr/ px /autoзаписываются в актуальном формате Figma, строковая форма"1fr 200px auto"тоже работает;textSizing: "truncate"пишется как обрезка с многоточием без устаревшего режима. -
Переходы: именованные правила (
"hover-in") работают черезfrom/toв объектной форме, а правило без направления попадает в предупреждения (раньше такие правила из документации не создавали ни одной реакции); значения осей с дефисами в правилах ($size=extra-large -> …),after-timeout 500в сокращённой записи,matchLayersу направленных переходов; неизвестная анимация или кривая теперь попадает в предупреждения, а не подменяется молча. -
Курсив в текстовом стиле сохраняется, даже если вес привязан к строковой переменной: начертание пишется литералом с подсказкой в отчёте.
-
Стили по ссылке на переменную:
fillиз одной ссылки на цвет иblur/backdrop-blurиз ссылки на число привязывают переменную; сетки соSTRETCH,MIN,MAX,CENTERпроходят проверку Figma; слойnoiseпишется безblendMode. -
Значения в форме DTCG: объекты
{ "value", "unit" }для длин и длительностей, цвет каналами{ r, g, b, a }и объект цвета DTCG (colorSpace,components,alpha,hex) читаются как обычные значения. Формулы дляdurationсчитаются в миллисекундах. -
Цвет с прозрачностью экспортируется составной ячейкой Figma: токен цвета с модификатором
alphaполучает переменную цвета и переменную прозрачности в одной ячейке, как в панели Variables, и это работает и для ссылки на цвет с числовой прозрачностью. Где Figma ещё не открыла запись, цвет остаётся с запечённой прозрачностью, а отчёт перечисляет такие переменные. -
Файлы, коллекции и папки на экране Tokens открываются во вкладках, как в IDE: переименование двойным щелчком, точка несохранённых изменений, вопрос при закрытии, память вкладок и вида для каждой рабочей области. Датасеты и маппинги вкладки Database живут в той же полосе.
-
Карточка токена по наведению на бейдж переработана: полный путь и тип, превью, значение как в JSON и ссылки с файлами, где они определены; ссылка на формулу считается до числа; клик копирует значение. Без выбранного мода превью считает значения для мода открытого файла.
-
Стили заливки: слои
videoиpattern, картинки и видео из Database, режим масштабирования, поворот и коррекция изображения, видимость слоя, прозрачность слоя ссылкой на токен. Градиенты:repeating-*, направление словами, форма, размер и позиция radial и conic, позиции стопов в пикселях и долях, ссылки в угле и позициях. Все ссылки на цвета по-прежнему становятся переменными в стиле. -
Текстовые стили: оси переменных шрифтов
fontVariationSettings(Figma Plugin API 1.138),listSpacing,textWrapStyle,hangingPunctuation,hangingList; форма типографики умеет их добавлять. -
Формы токенов больше не теряют поля при редактировании: видимость, режим наложения и «тень позади слоя» у теней, объектные значения размытий и картинок, цвет и видимость сетки.
-
Импорт из Figma читает все слои стиля заливки, а не только первый, и не выбрасывает скрытые слои эффектов.
2.9.2
- Поддержаны новые типы переменных Figma Timing и Easing: токены
durationэкспортируются как Timing,cubicBezierи новый типeasingкак Easing, включая пресеты и пружины. При импорте из Figma они возвращаются в JSON. В окнах Export и Import появились переключатели Timing и Easing. - Стили эффектов поддерживают все текущие эффекты Figma: обычное и прогрессивное размытие, шум, текстуру, стекло и шейдеры, с привязкой переменных к цвету, смещению, радиусу и размытию теней.
- Цвет с переменной прозрачности: когда Figma включит эту возможность в вашем файле, токен цвета с модификатором
alphaна ссылку сам привяжет переменную прозрачности; пока возможности нет, экспорт работает как раньше. - Сохранение файла токенов больше не может зависнуть молча: через 20 секунд без ответа редактор показывает причину, а команда
statusв Diagnostics печатает очередь операций и последние сохранения.
2.9.1
- В форме Git-подключения появились кнопки Test connection и Fix: проверка токена, репозитория, ветки и папок с отчётом и автоматическим исправлением опечаток в путях и имени ветки.
- Новая вкладка Diagnostics в окне синхронизации: команды
status,diag,test,logи другие, отчёт для поддержки без токенов. - Окно Git Sync упрощено: источники переключаются кнопками Use Git и Set Active в строках подключений, статус показывает время последней проверки.
- Окна Pull и Push сравнивают файлы как в IDE: неизменённые области свёрнуты, есть переходы между изменениями и фильтры по типу изменения.
- Переключение из Local Workspace на Git проверяет подключение заранее и не оставляет плагин без источника, если Git недоступен.
- Понятные тексты ошибок GitHub и GitLab: ответ 404 объясняется правами токена, ошибки авторизации и лимитов не выглядят как пустой репозиторий.
2.9.0
- Новый источник Local Workspace: плагин работает прямо с папкой репозитория на диске через SXL Bridge, следит за изменениями файлов и защищает несохранённый черновик редактора от перезаписи.
- Несколько профилей Local Workspace с быстрым переключением из футера; последний источник запоминается для каждого файла Figma.
- В подключении Git появилось поле Figma File URL or Key для случаев, когда плагин не может определить ключ файла сам.
- Исправлено повторное применение композиций к обычным компонентам.
2.8.10
- Композиции получили описание в Markdown и ссылки на документацию, которые попадают в панель Figma при Generate и Apply.
- Get Code обновляет только сгенерированные поля композиции и сохраняет ваши правки.
- В редакторе токенов для булевых переменных нет scopes, а для
fontWeightдопустим толькоFONT_STYLE.
2.8.9
- Умное сопоставление переменных и стилей при экспорте: без дубликатов стилей и осиротевших переменных.
- Композиции сообщают о недостающих компонентах и непривязанных переменных в отчёте Apply.
- Служебный файл Diff-ID сравнивается по содержанию, а не по форматированию; добавьте
diff-id.*.jsonв.prettierignore.