Repository navigation
feat(ds): градиент как вид значения цветового токена - #122
Merged
Merged
Conversation
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
neretin-trike
approved these changes
Oct 21, 2026
vkaltyrin
force-pushed
the
feature/ds-service-color-token-gradients
branch
from
October 21, 2026 11:30
7367882 to
480b3ea
Compare
This was referenced Oct 21, 2026
vkaltyrin
force-pushed
the
feature/ds-service-color-token-gradients
branch
from
October 22, 2026 07:52
480b3ea to
e2fcd22
Compare
malilex
force-pushed
the
feature/ds-versions
branch
from
October 22, 2026 12:26
74386d7 to
d143d81
Compare
vkaltyrin
force-pushed
the
feature/ds-service-color-token-gradients
branch
from
October 22, 2026 14:24
e2fcd22 to
f75341d
Compare
angirb
reviewed
Oct 27, 2026
angirb
reviewed
Oct 27, 2026
angirb
reviewed
Oct 27, 2026
Код групп токенов уже в dev (#106). Дельты перенесены в openspec/specs, добавлена спека token-groups-api. Требование «Группа токена в палитре» заменено явно: сценарии выбора группы палитры в интерфейсе убраны вместе с полем инспектора.
Градиент как вид значения цветового токена в паре тема × режим: тип семейства вычисляет ds-service, редактор Linear / Radial / Conic с отдельным окном цвета стопа, свои значения iOS и Android строками в инспекторе, ссылки стопов на палитру, миграция V7 сидовых заглушек.
Тип семейства пишется редакциями /type под блокировкой определений, значения других тем не переписываются: сплошные значения платформ хранятся строкой, слой color добавляет чтение token-values. Признак overridden — путь редакции значения, производный тип скрыт в журнале и пересчитывается при откате, миграция V8 правит редакции на месте.
Тип семейства color/gradient вычисляется из значений всех тем и пишется редакциями /type под блокировкой определений семейства; значения других тем не переписываются. Сплошные значения ios/android хранятся строкой, token-values (по теме и общий) отдаёт их слоем color у градиентного семейства, раскрывает ссылки на палитру в стопах и отдаёт sourceValue. Признак overridden — путь /overridden редакции значения. Проверка web-градиентов (linear, radial, conic) и слоёв платформ, ссылки в стопах в связях, удалении и отмене растяжки. Производный /type скрыт в журнале и пересчитывается при откате, удалении темы и записи через общие маршруты значений. Миграция V11 приводит сидовые заглушки к color.
…«Цвета» Вид значения цвет/градиент в каждой паре тема × режим, редактор Linear/Radial/Conic с отдельным окном цвета стопа, строки «↳ iOS» и «↳ Android» с признаком overridden, построение платформ из web по членам семейства, переименование на месте, без поля «Имя» и кнопки «Web». Выбор цвета открывается у поля. Журнал показывает цвета и градиенты в терминах редактора с частичной отменой параметров. Превью Compose понимает хранимую форму градиента.
…е на стенде Миграция V11, члены семейства по правилу имени, пересчёт типа при удалении темы и записи через общие маршруты, sourceValue/paletteRef, форма значений в общем GET, «+» и «×» платформ и подтемы, выбор цвета у поля, переименование на месте, журнал в терминах редактора.
Дельты перенесены в openspec/specs. Требования «Значения градиентных токенов проверяются при записи» и «Выбор цвета повторяет прототип» заменены явно: градиент стал видом значения цветового токена.
…я цветов После перебазирования на dev плотность сложности клиента выросла до 9,56 при базовой 9,33. Без смены базы: - разбор слоёв web и iOS/Android по таблицам геометрии вместо цепочек условий; - readPaint общий для web и платформ, подписи и CSS градиента по типу из таблицы; - прозрачность значения через помощники домена градиентов вместо своих копий; - превью Compose раскрывает ссылки палитры одним проходом по значению; - удалены colorTokenActions, gradientTokenActions и parseGradient: после перехода редактора на домен colorTokens у них не осталось потребителей.
- вкладки выбора цвета «Свой» и «Палитра», заголовок списка стопов «Стопы»; типы градиента Linear, Radial и Conic остаются общепринятыми названиями; - ползунок тона белого, чёрного и почти серого цвета не прыгает после записи: пока цвет совпадает с записанным, ползунки показывают записанное положение, а не восстановленное из HEX; - у списка типа градиента своя стрелка с отступом от края поля.
Linear, Radial и Conic в списке типа, подписи поля значения и журнале стали «Линейный», «Радиальный» и «Конический», как в макете.
vkaltyrin
force-pushed
the
feature/ds-service-color-token-gradients
branch
from
October 27, 2026 12:21
b0f6bdf to
80e7c57
Compare
Названия вкладок как в Figma: Custom — «Вручную», Library — «Библиотека».
angirb
approved these changes
Oct 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Зачем
На экране «Цвета» градиент был отдельным типом токена. Поэтому нельзя было задать градиент только в одной теме или режиме, например цвет в Light и градиент в Dark. Редактор умел только Linear без изменения угла, ступень палитры в стопе сохранялась как HEX. У 12 из 17 сидовых градиентных семейств в web лежала HEX-заглушка, а в iOS и Android — градиент «белый → чёрный». Своё значение для iOS или Android задать было нельзя: каждая правка перезаписывала платформы.
Что сделано
ds-service
Тип семейства
colorилиgradientвычисляется из значений всех тем. При смене он пишется редакциями/typeопределений, перед этим определения семейства блокируются. Значения других тем не переписываются. Члены семейства выбираются по правилу имени без учёта типа.Сплошные значения ios и android всегда хранятся строкой.
GET …/tenants/{id}/token-valuesи общийGET /api/ds/token-values*отдают их у градиентного семейства слоем{ kind: "color" }, раскрывают ссылки на палитру внутри стопов и отдают исходник вsourceValue. При ссылке на всё значение отдаётся толькоpaletteRef.Признак своего значения платформы
overriddenхранится в редакции значения путём/overridden. Запись типографики из feat: typography tokens editor and ds-service typography style operations #121 сохраняет текущий признак значения.Проверка значений:
Общие маршруты
/api/ds/token-valuesпроверяют вид значения после проверки прав и пересчитывают тип.Журнал: производный
/typeне показывается. Тип пересчитывается при откате записи токена или значения, а также при удалении темы и откате её создания.Палитра учитывает ссылки в стопах в связях растяжки, при её удалении и при отмене.
Миграция
V15__color_token_value_kind.sql:overridden;color;Строки редакций правятся на месте, без черновых редакций и записей журнала. Прежние значения сохраняются в
v15_color_token_backup.client
overridden, «×» её убирает.colorTokenActions,gradientTokenActionsиparseGradient. После перехода экрана на доменcolorTokensу них не осталось потребителей.OpenSpec
add-color-token-groups(код уже вdev, feat: color tokens editor and ds-service color token operations #106) иadd-color-token-gradients.Как проверено
dev(feat: typography tokens editor and ds-service typography style operations #121):tsc, сборка;js/cli: 62 теста;openspec validate --all --strict: 87 из 87.type: gradient, у второй темы новых редакций нет, её сплошные значения Android отдаются слоем;color.Что важно знать
colorиgradientпереносит его между{platform}_color.jsonи{platform}_gradient.json. Предупреждения в интерфейсе нет, так решила команда. Сидовые семейства-заглушки выключены, поэтому пакет по умолчанию миграция не меняет.v15_color_token_backup.devмиграция стала V15, потому что V11–V14 заняли feat(ds): версии, журнал изменений и версионная палитра #109, feat(ds-service): Add component editor model API #123, feat: host Compose preview plugin builds on the backend (host-compose-preview-plugin) #124 и feat(ds-service): own variations per design system #132.dev9,58. Чтобы уложиться, разбор градиентов переведён на таблицы, а мёртвые действия цветов удалены. Часть снижения дала особенность анализатора: он не считает ветвления внутри безымянных колбэков.Не входит
palette_id, и та же ступень, записанная строкой, считаются разными. Поэтому правки без изменения цвета дают записи в журнале. Поведение было и до этого PR, вынесено отдельной задачей.OpenSpec
openspec/changes/archive/2026-10-21-add-color-token-groupsopenspec/changes/archive/2026-10-22-add-color-token-gradients