@sberbusiness/triplex-next-mcp-server 1.40.0-beta → 1.41.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/components/Calendar.md +183 -368
- package/bundle/components/Chip.md +310 -314
- package/bundle/components/FormField.md +468 -232
- package/bundle/components/IconWrapper.md +142 -89
- package/bundle/components/Island.md +221 -129
- package/bundle/components/KeyDownListener.md +215 -102
- package/bundle/components/LoaderMiddle.md +265 -0
- package/bundle/components/LoaderScreen.md +178 -81
- package/bundle/components/ThemeProvider.md +305 -117
- package/bundle/components/Tooltip.md +421 -181
- package/bundle/guides/commits.md +14 -6
- package/bundle/manifest.json +22 -11
- package/bundle/release-notes/1.41.0.mdx +76 -0
- package/bundle/release-notes/1.42.0.mdx +7 -0
- package/package.json +1 -1
package/bundle/guides/commits.md
CHANGED
|
@@ -30,7 +30,8 @@ TRI-21-alert-ai-ready
|
|
|
30
30
|
**Исключения:**
|
|
31
31
|
- Релизная ветка: `prerelease-X.Y.Z` (например, `prerelease-1.40.0`) — в неё
|
|
32
32
|
собираются фиксы релиза и бамп версии, PR идёт в `main`
|
|
33
|
-
- Перелитие main → release-0: выполняется без отдельной ветки,
|
|
33
|
+
- Перелитие main → release-0: выполняется человеком без отдельной ветки,
|
|
34
|
+
прямым мержем
|
|
34
35
|
|
|
35
36
|
Исключение касается только **имени ветки**. Коммиты внутри неё подчиняются
|
|
36
37
|
общему правилу `TRI-XXX`: на релиз заводится задача Linear, её номер идёт
|
|
@@ -48,11 +49,18 @@ TRI-21-alert-ai-ready
|
|
|
48
49
|
|
|
49
50
|
**Правило:** все фича-ветки создаются от `main`. Изменения попадают в `release-0` через перелитие. Агент не должен создавать ветки от `release-0` и не должен мерджить в неё напрямую.
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
**Перелитие делает человек, не агент.** Мерж `main` → `release-0` идёт
|
|
53
|
+
напрямую, без PR, с разрешением конфликтов React 17-адаптаций — это ручной
|
|
54
|
+
шаг мейнтейнера в конце спринта. Правила разрешения конфликтов и регламент
|
|
55
|
+
подготовки описаны в `.agents/skills/release-react17/SKILL.md` и
|
|
56
|
+
`docs/human/release.md`. Прямой push в `release-0` проверяется CI:
|
|
57
|
+
`ci.yml` триггерится на `push: branches: [release-0]`.
|
|
58
|
+
|
|
59
|
+
**Единственное исключение для агента** — релизный коммит `release-react17`
|
|
60
|
+
(бамп версии + release notes): он тоже пушится в `release-0` напрямую, без
|
|
61
|
+
PR. Прогон CI на него стартует, но дождаться его нельзя — GitHub Release
|
|
62
|
+
создаётся сразу после push. Поэтому исключение компенсируется обязательными
|
|
63
|
+
локальными гейтами (`tsc`, `test-unit`, `build`).
|
|
56
64
|
|
|
57
65
|
---
|
|
58
66
|
|
package/bundle/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"triplexVersion": "1.
|
|
4
|
-
"generatedAt": "2026-
|
|
3
|
+
"triplexVersion": "1.41.0",
|
|
4
|
+
"generatedAt": "2026-08-07T11:02:25.745Z",
|
|
5
5
|
"components": [
|
|
6
6
|
{
|
|
7
7
|
"name": "AbstractTree",
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"name": "Calendar",
|
|
92
|
-
"path": "src/components/Calendar/Calendar-
|
|
92
|
+
"path": "src/components/Calendar/Calendar-ai.md",
|
|
93
93
|
"file": "components/Calendar.md",
|
|
94
94
|
"ai_ready": true
|
|
95
95
|
},
|
|
@@ -150,7 +150,7 @@
|
|
|
150
150
|
},
|
|
151
151
|
{
|
|
152
152
|
"name": "Chip",
|
|
153
|
-
"path": "src/components/Chip/Chip-
|
|
153
|
+
"path": "src/components/Chip/Chip-ai.md",
|
|
154
154
|
"file": "components/Chip.md",
|
|
155
155
|
"ai_ready": true
|
|
156
156
|
},
|
|
@@ -271,7 +271,7 @@
|
|
|
271
271
|
},
|
|
272
272
|
{
|
|
273
273
|
"name": "FormField",
|
|
274
|
-
"path": "src/components/FormField/FormField-
|
|
274
|
+
"path": "src/components/FormField/FormField-ai.md",
|
|
275
275
|
"file": "components/FormField.md",
|
|
276
276
|
"ai_ready": true
|
|
277
277
|
},
|
|
@@ -307,7 +307,7 @@
|
|
|
307
307
|
},
|
|
308
308
|
{
|
|
309
309
|
"name": "IconWrapper",
|
|
310
|
-
"path": "src/components/IconWrapper/IconWrapper-
|
|
310
|
+
"path": "src/components/IconWrapper/IconWrapper-ai.md",
|
|
311
311
|
"file": "components/IconWrapper.md",
|
|
312
312
|
"ai_ready": true
|
|
313
313
|
},
|
|
@@ -325,7 +325,7 @@
|
|
|
325
325
|
},
|
|
326
326
|
{
|
|
327
327
|
"name": "Island",
|
|
328
|
-
"path": "src/components/Island/Island-
|
|
328
|
+
"path": "src/components/Island/Island-ai.md",
|
|
329
329
|
"file": "components/Island.md",
|
|
330
330
|
"ai_ready": true
|
|
331
331
|
},
|
|
@@ -343,7 +343,7 @@
|
|
|
343
343
|
},
|
|
344
344
|
{
|
|
345
345
|
"name": "KeyDownListener",
|
|
346
|
-
"path": "src/components/KeyDownListener/KeyDownListener-
|
|
346
|
+
"path": "src/components/KeyDownListener/KeyDownListener-ai.md",
|
|
347
347
|
"file": "components/KeyDownListener.md",
|
|
348
348
|
"ai_ready": true
|
|
349
349
|
},
|
|
@@ -437,9 +437,15 @@
|
|
|
437
437
|
"file": "components/Loader.md",
|
|
438
438
|
"ai_ready": true
|
|
439
439
|
},
|
|
440
|
+
{
|
|
441
|
+
"name": "LoaderMiddle",
|
|
442
|
+
"path": "src/components/Loader/LoaderMiddle-ai.md",
|
|
443
|
+
"file": "components/LoaderMiddle.md",
|
|
444
|
+
"ai_ready": true
|
|
445
|
+
},
|
|
440
446
|
{
|
|
441
447
|
"name": "LoaderScreen",
|
|
442
|
-
"path": "src/components/LoaderScreen/LoaderScreen-
|
|
448
|
+
"path": "src/components/LoaderScreen/LoaderScreen-ai.md",
|
|
443
449
|
"file": "components/LoaderScreen.md",
|
|
444
450
|
"ai_ready": true
|
|
445
451
|
},
|
|
@@ -704,7 +710,7 @@
|
|
|
704
710
|
},
|
|
705
711
|
{
|
|
706
712
|
"name": "ThemeProvider",
|
|
707
|
-
"path": "src/components/ThemeProvider/ThemeProvider-
|
|
713
|
+
"path": "src/components/ThemeProvider/ThemeProvider-ai.md",
|
|
708
714
|
"file": "components/ThemeProvider.md",
|
|
709
715
|
"ai_ready": true
|
|
710
716
|
},
|
|
@@ -716,7 +722,7 @@
|
|
|
716
722
|
},
|
|
717
723
|
{
|
|
718
724
|
"name": "Tooltip",
|
|
719
|
-
"path": "src/components/Tooltip/Tooltip-
|
|
725
|
+
"path": "src/components/Tooltip/Tooltip-ai.md",
|
|
720
726
|
"file": "components/Tooltip.md",
|
|
721
727
|
"ai_ready": true
|
|
722
728
|
},
|
|
@@ -1007,6 +1013,11 @@
|
|
|
1007
1013
|
"file": "release-notes/1.41.0.mdx",
|
|
1008
1014
|
"path": "stories/release-notes/v1/1.41.0.mdx"
|
|
1009
1015
|
},
|
|
1016
|
+
{
|
|
1017
|
+
"version": "1.42.0",
|
|
1018
|
+
"file": "release-notes/1.42.0.mdx",
|
|
1019
|
+
"path": "stories/release-notes/v1/1.42.0.mdx"
|
|
1020
|
+
},
|
|
1010
1021
|
{
|
|
1011
1022
|
"version": "1.5.0",
|
|
1012
1023
|
"file": "release-notes/1.5.0.mdx",
|
|
@@ -4,4 +4,80 @@ import { Meta, Title, Heading } from "@storybook/addon-docs/blocks";
|
|
|
4
4
|
|
|
5
5
|
<Title>v1.41.0</Title>
|
|
6
6
|
|
|
7
|
+
<Heading>Ломающие изменения</Heading>
|
|
8
|
+
|
|
9
|
+
**FormField**
|
|
10
|
+
|
|
11
|
+
- `statusToClassNameMap` больше не экспортируется — ни из `components/FormField`, ни из корня пакета. Маппинг статуса на CSS-класс переименован во внутреннюю константу `STATUS_TO_CLASS_NAME_MAP` и стал деталью реализации компонента. Воспроизвести его на стороне потребителя нельзя: имена классов хешируются при сборке вместе с версией библиотеки (`error` → `error__58eeaf1b`) и меняются от релиза к релизу. Визуальное состояние поля задаётся prop `status` у `FormField` — используйте его; если нужно опереться на состояние в собственных стилях, навешивайте свой класс рядом.
|
|
12
|
+
|
|
7
13
|
<Heading>Изменения</Heading>
|
|
14
|
+
|
|
15
|
+
**Calendar**
|
|
16
|
+
|
|
17
|
+
- Изменён цвет muted/disabled дня/месяца/года в тёмной теме.
|
|
18
|
+
- AI-рефакторинг: JSDoc на props и внутренних компонентах, codestyle-чистка, unit-тесты (Calendar, CalendarViewItem, utils), создан `Calendar-ai.md`. Публичный API не изменён; внутренний `CalendarFooter` теперь применяет объявленные, но ранее игнорировавшиеся `className` и `...rest`.
|
|
19
|
+
- Исправлено: для `pickType={ECalendarPickType.MONTH_YEAR}` внешняя смена `pickedDate` на другой месяц выставляла заголовок в формате «March 1970» вместо «1970» — до следующего перелистывания. Заголовок теперь всегда форматируется по текущему виду отображения.
|
|
20
|
+
- Исправлено: после смены страницы с клавиатуры (`PageUp` / `PageDown`) фокус не возвращался на новую tabbable-ячейку, если она занимала ту же позицию сетки (в видах месяцев и годов — всегда). Фокус восстанавливается только когда он уже находился внутри сетки — программная смена страницы фокус не забирает.
|
|
21
|
+
- Исправлено: выбор первой tabbable-ячейки страницы (когда `pickedDate` вне страницы, а начальные даты отключены) перебирал кандидатов с накоплением шага (0, +1, +3, +6…), а в виде годов прибавлял месяцы вместо лет — tabbable-ячейкой могла стать не первая доступная дата, либо она не назначалась вовсе.
|
|
22
|
+
- Расширение API: поля `dateFrom` / `dateTo` в `IDateLimitRange` стали опциональными — типы приведены к фактическому поведению: незаданная граница берётся из `globalLimitRange`. Внешнему TS-коду, читающему эти поля, может потребоваться проверка на `undefined`.
|
|
23
|
+
- Расширение API: функциональный вариант `dayHtmlAttributes` теперь допускает возврат `data-*` атрибутов (`TTdHTMLAttributesWithData`) — как и объектный вариант. Функции с явной аннотацией возврата старым типом `React.TdHTMLAttributes<…>` нужно перевести на `TTdHTMLAttributesWithData`.
|
|
24
|
+
|
|
25
|
+
**CardAction, CardStatic**
|
|
26
|
+
|
|
27
|
+
- В `ECardRoundingSize` добавлено значение `LG` — скругление 24px. Существующие `MD` (16px) и `SM` (8px) не изменились, значение по умолчанию осталось `MD`.
|
|
28
|
+
|
|
29
|
+
**Chip**
|
|
30
|
+
|
|
31
|
+
- AI-рефакторинг: JSDoc на props (у `size` и `type` в описании указаны значения по умолчанию) и на внутреннем обработчике клавиатуры, константы-маппинги типа и размера приведены к общему стилю именования, упрощены условия формирования классов, unit-тесты расширены с 5 до 22 кейсов. Публичный API, DOM и визуальное поведение не изменены.
|
|
32
|
+
- `children` явно объявлен в `IChipProps` — тип прежний (раньше приходил из `React.HTMLAttributes`), но у prop появилось описание в подсказках IDE и в таблице props.
|
|
33
|
+
|
|
34
|
+
**FocusTrapExtended**
|
|
35
|
+
|
|
36
|
+
- Оптимизировано управление стеком ловушек фокуса во вложенных окнах за счет перевода активного инстанса на контролируемую паузу вместо его деактивации.
|
|
37
|
+
|
|
38
|
+
**FormField**
|
|
39
|
+
|
|
40
|
+
- Исправлено: `className`, переданный в `FormFieldDescription` или `FormFieldCounter`, затирал базовый класс компонента вместо того, чтобы дополнять его. Теперь классы объединяются, как у остальных компонентов библиотеки.
|
|
41
|
+
- AI-рефакторинг: документация props и значений `EFormFieldStatus`, внутренние упрощения и расширенные unit-тесты. Охвачены `FormFieldInput`, `FormFieldLabel`, `FormFieldPrefix`, `FormFieldPostfix`, `FormFieldClear`, `FormFieldDescription`, `FormFieldCounter`. Остальной публичный API не изменён.
|
|
42
|
+
|
|
43
|
+
**IconWrapper**
|
|
44
|
+
|
|
45
|
+
- AI-рефакторинг: JSDoc на props, расширены unit-тесты. Публичный API и поведение не изменены.
|
|
46
|
+
|
|
47
|
+
**Island**
|
|
48
|
+
|
|
49
|
+
- Исправлено: `className`, переданный в `IslandHeader` (`Island.Header`) или `IslandFooter` (`Island.Footer`), затирал базовый класс компонента вместо того, чтобы дополнять его. Теперь классы объединяются, как в `IslandBody` и у остальных компонентов библиотеки. Это влияет на любой код, передающий `className` в эти части: базовый класс остаётся на элементе, поэтому к нему снова применяются отступы `Island` и `position: relative` из стилей части. Последнее меняет containing block — абсолютно спозиционированные потомки внутри такой части теперь позиционируются относительно неё, а не относительно ближайшего внешнего positioned-предка. Компоненты самой библиотеки выглядят как прежде: единственный затронутый — `IslandAccordion`, в его стилях отступ Island погашен явно.
|
|
50
|
+
- AI-рефакторинг: JSDoc на props, значениях `EIslandType` и субкомпонентах, `displayName` у `IslandHeader`, `IslandBody`, `IslandFooter`, добавлены unit-тесты. Публичный API не изменён (props, значения enum, barrel-экспорты, `forwardRef` — как были).
|
|
51
|
+
|
|
52
|
+
**KeyDownListener**
|
|
53
|
+
|
|
54
|
+
- AI-рефакторинг: JSDoc на props, обработчик нажатия сведён к одной проверке кода клавиши, в `ComposedKeyDownListener` убрано приведение типа `children` и добавлен `displayName`, добавлены unit-тесты и stories. Существующий публичный API не изменён (props, их типы, class-компонент `KeyDownListener` с публичным методом `handleKeyDown` — как были).
|
|
55
|
+
- Интерфейс props `IComposedKeyDownListenerProps` теперь экспортируется из пакета — можно типизировать собственные обёртки над `ComposedKeyDownListener`.
|
|
56
|
+
- Исправлено: `ComposedKeyDownListener` с пустым `keyDownListeners` и без `children` больше не возвращает `undefined` из рендера — на React 17 это приводило к ошибке «Nothing was returned from render».
|
|
57
|
+
|
|
58
|
+
**LoaderMiddle**
|
|
59
|
+
|
|
60
|
+
- AI-рефакторинг: JSDoc на компоненте, порядок импортов приведён к codestyle, в стилях объединены дублирующиеся базовые правила точек и обегающей линии, unit-тесты расширены с 1 до 2 кейсов, создан `LoaderMiddle-ai.md`. В stories `controls: { disable: true }` перенесён на верхний уровень `parameters` — внутри `docs` он не применялся. Публичный API и поведение не изменены (props, DOM-разметка, `role="status"`, токены — как были).
|
|
61
|
+
|
|
62
|
+
**LoaderScreen**
|
|
63
|
+
|
|
64
|
+
- AI-рефакторинг: JSDoc на компоненте, props и `ILoaderScreenMiddleProps` (у `size` указано значение по умолчанию), соответствие типа лоадера классу подложки вынесено в константу-маппинг, порядок импортов и позиция `className` в `clsx` приведены к общему стилю, unit-тесты расширены с 6 до 15 кейсов, создан `LoaderScreen-ai.md`. Публичный API, DOM и визуальное поведение не изменены — изменился только порядок классов внутри атрибута `class` корневого элемента (набор классов тот же, на каскад не влияет).
|
|
65
|
+
|
|
66
|
+
**StatusTracker**
|
|
67
|
+
|
|
68
|
+
- Добавлены токены `StatusTracker.Background` и `StatusTracker.Draft_Color`.
|
|
69
|
+
- Токен `StatusTracker.Draft_Background` теперь задает цвет подсветки статуса `draft`.
|
|
70
|
+
- Изменены цвета токенов `StatusTracker.Draft_Background`, `StatusTracker.Draft_Color`, `StatusTracker.Rejected_Color` в светлой и темной темах.
|
|
71
|
+
- Минимальная высота изменена для десктоп экранов и удалена для мобильных экранов.
|
|
72
|
+
|
|
73
|
+
**ThemeProvider**
|
|
74
|
+
|
|
75
|
+
- AI-рефакторинг: JSDoc на props, значениях `ETriplexNextTheme` и полях контекста темы, ключ тега стилей с css-переменными вынесен в отдельный хелпер (раньше строка собиралась в двух местах), упрощён эффект навешивания `scopeClassName` — убран дублирующий его ref. Добавлены unit-тесты на `ThemeProviderView` и `useToken`. Публичный API, DOM и поведение не изменены.
|
|
76
|
+
|
|
77
|
+
**Tooltip**
|
|
78
|
+
|
|
79
|
+
- Исправлено: подсказка, смонтированная сразу открытой (управляемый режим `isOpen`), не закрывалась по действию мышью вне неё — при монтировании навешивался обработчик `click`, а снимался `mousedown`.
|
|
80
|
+
- Исправлено: класс темы больше не снимается с контейнера, если в течение задержки закрытия подсказку открыли снова или контейнер занял другой `Tooltip`.
|
|
81
|
+
- Исправлено: в адаптивном (мобильном) режиме свойства `size` и `alignTip` больше не уходят в DOM — React больше не предупреждает о нераспознанном атрибуте `alignTip`.
|
|
82
|
+
- Исправлено: при размонтировании открытой подсказки с `toggleType="hover"`, а также при смене `toggleType` на лету обработчики наведения снимаются и навешиваются и на саму подсказку, а не только на целевой элемент.
|
|
83
|
+
- AI-рефакторинг: разбор `children` вынесен в чистую функцию и мемоизирован, значение контекста стабилизировано, дедуплицирована разметка `Tooltip.Link`, из расчёта координат убрано двойное приведение типов, в хуке темы вынесен хелпер и добавлен guard при размонтировании, `displayName` внутреннего `TooltipDesktopBase` приведён к имени класса, добавлены JSDoc на props и приватные методы, добавлены unit-тесты. Публичный API не изменён (props, значения enum, barrel-экспорты, `forwardRef` — как были).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sberbusiness/triplex-next-mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.41.0-beta",
|
|
4
4
|
"description": "MCP-сервер для дизайн-системы Triplex. Предоставляет AI-агентам документацию компонентов, дизайн-токены и примеры использования.",
|
|
5
5
|
"author": "СберБизнес",
|
|
6
6
|
"license": "MIT",
|