Что нового — Сентябрь 2026
30 сентября
Visual Linker 0.2.0
Breaking (Vue):
<VisualLinker>больше не рендерит обёртку<div class="vl-block">вокруг слота#block-<id>для каждого блока. Теперь он оборачивает вашу собственную разметку в default-слоте, а блоки находятся в ней на любой глубине, внутри любых компонентов-обёрток. Для миграции перенесите содержимое слотов в default-слот и пометьте каждый элемент-блок черезv-vl-block="id"(илиdata-vl-block="id"):vue<!-- 0.1.x --> <VisualLinker :blocks="blocks" :connections="connections"> <template v-for="b in blocks" #[`block-${b.id}`]="{}" :key="b.id"> <MyCard :data="b" /> </template> </VisualLinker> <!-- 0.2.0 --> <VisualLinker :connections="connections"> <MyCard v-for="b in blocks" :key="b.id" v-vl-block="b.id" :data="b" /> </VisualLinker>Breaking (Vue): проп
blocksстал необязательным. Запись может напрямую зарегистрировать элемент через новое полеel(template ref, геттер, элемент или CSS-селектор) либо — безel— лишь добавить конфигурацию (порты, настройки перетаскивания) блоку, уже помеченному в шаблоне.Новое (Vue): директивы
v-vl-block/v-vl-port, экспортируются какvVlBlock/vVlPort. Порт привязывается к ближайшему блоку вокруг него или к блоку, указанному в его опцииblock.Новое (Vue): обычные
data-vl-*атрибуты — способ пометить блоки и порты вообще без JavaScript (data-vl-block,data-vl-draggable,data-vl-drag-handle,data-vl-drag-bounds,data-vl-port,data-vl-port-block,data-vl-side,data-vl-offset,data-vl-anchor,data-vl-linker); имена экспортируются какVL_ATTR.Новое (Vue): живое обнаружение — блоки и порты, добавленные, удалённые или перепомеченные после монтирования (
v-if,v-for, сторонняя разметка), подхватываются автоматически.Новое (Vue): проп
scope—'container'(по умолчанию) или'page': связывает элементы в любом месте документа и рисует в слоеposition: fixed, телепортированном в<body>.Новое (Vue): проп
nameвместе с опциейlinkerу директив / атрибутомdata-vl-linker— чтобы закрепить элемент за конкретным<VisualLinker>; пропzIndexдля слоя отрисовки. Прочие атрибуты, переданные в<VisualLinker>, теперь попадают на его корневой элемент.Новое (Vue):
VisualLinkerPlugin—app.use()глобально регистрирует<VisualLinker>и обе директивы. Также экспортируются типыVisualLinkerScope,BlockDirectiveOptions,BlockDirectiveValue,PortDirectiveOptions,PortDirectiveValue,RefFriendlyDragBoundsиRefFriendlyElement.Изменено (Vue): слой отрисовки рендерится только на клиенте после монтирования — серверный рендер совпадает с проходом гидратации.
Новое (Nuxt):
v-vl-block/v-vl-portрегистрируются универсальным плагином — в том числе на сервере, так чтоdata-vl-*атрибуты уже есть в серверном HTML.Новое (core):
MarkerConfig.arrow—trueили{ color?, gap? }(новый типMarkerArrowConfig) рисует наконечник стрелки прямо перед маркером circle/square/diamond, острие которого упирается ровно во внешний край фигуры с учётом обводки. Маркер со стрелкой всегда используетorient: 'auto'.Изменено (core): подсвеченное соединение рисуется поверх соседних, а другие соединения, заканчивающиеся в той же точке, скрывают там свой маркер — маркеры обычного размера больше не перекрывают подсвеченный.
Исправлено (core): соединение с явным
style.widthтеряло утолщение при наведении/подсветке — явная инлайн-ширина перебивала CSS-правило. Теперь утолщение тоже применяется инлайн.Изменено (core): перетаскивание сдвигает блок через отдельное CSS-свойство
translateвместоtransform— сдвиг складывается с уже имеющейся у блока трансформацией, а не затирает её.
26 сентября
InView 0.3.0
- Задержка стаггера у
createRevealControllerтеперь полностью пропускается приprefers-reduced-motion: reduce— переключение класса/атрибута по-прежнему происходит как обычно, пропускается только сама задержка по времени. createElementTracker(а вместе с ним и composables/хукиuseElementViewport/useParallaxLayer, построенные на нём, для Vue и React) принимает элементroot, чтобы считатьviewportProgress/distanceFromCenterотносительно прокручиваемого контейнера вместо окна — для параллакс-слоя или трекера позиции внутриoverflow: auto(панель дашборда, модалка). Самrectв любом случае остаётся привязанным к окну.- Опции
useElementVisibilityтеперь реактивны в обоих адаптерах. Vue:threshold/rootMargin/root/onceпринимают ref/геттер — изменениеthreshold/rootMargin/rootвызывает настоящую переподписку,onceобновляется вживую без пересоздания подписки. React:once/onEnter/onLeaveтеперь обновляются вживую при каждом ре-рендере (раньше замораживались на том рендере, где подписка впервые создавалась), а свежий инлайн-массивthresholdна каждом рендере больше не вызывает лишнюю переподписку. - Новые Vue composables:
useRevealController(создаётcreateRevealControllerпри монтировании, уничтожает при размонтировании),usePrefersReducedMotion(реактивныйRef<boolean>, в отличие от статическойprefersReducedMotion()),useStagger,useScrollTo,useScrollSpy. - Новые React-хуки:
useReveal(эквивалент Vue-директивыv-reveal— автоматически переключает класс/атрибут),useRevealController,usePrefersReducedMotion,useStagger,useScrollTo,useScrollSpy— той же формы, что и Vue composables выше. - Новое в
@macrulez/inview-core:createScrollSpy(отслеживает, какой из списка целевых элементов сейчас находится в «активной» полосе около вертикального центра viewport — для подсветки активного пункта навигации) иscrollToElement(плавно прокручивает контейнер, чтобы элемент оказался у его края, с отступом в px). - Контроллер, который возвращает
createRevealController, получилobserve(el)/unobserve(el)(для элементов вне скана поselector) иrefresh(selector?)(разовый скан с другим селектором, в дополнение к уже существующемуrefresh()без аргументов). Атрибутdata-reveal-attributeна конкретном элементе теперь переопределяетactiveAttributeтак же, какdata-reveal-classуже переопределялactiveClass. - Список автоимпортов Nuxt теперь включает
useRevealController,usePrefersReducedMotion,useStagger,useScrollTo,useScrollSpy,createScrollSpyиscrollToElement.
25 сентября
DevToolz 0.2.1
- Новое: команда
full-checkпрогоняет все остальные команды за один проход, каждую в её безопасном режиме только для чтения, и показывает одну сводную таблицу. Три команды, способные писать (strip-comments,console-strip,case-check), всегда вызываются как превью. Обычный запуск в настоящем терминале спрашивает проstale-ts-ignore— единственную медленную команду; управляют этим--skipи--no-prompt. См. Полная проверка. - Добавлено в программный API:
runFullCheck,renderFullCheckReportи их типы. Самfull-checkсобирается из собственных функцийrun*()остальных команд, которые корень пакета уже экспортировал.
DevToolz 0.2.0
- Новое:
unused-depsнаходит зависимости вpackage.json, на которые нет ни одного импорта, и «фантомные» зависимости, которые импортируются, но не объявлены. См. Граф зависимостей. - Новое:
circular-importsнаходит циклы импортов и показывает каждый как полную цепочку; циклы, состоящие только изimport type, скрыты, пока не передан--include-types. См. Граф зависимостей. - Новое:
empty-catchнаходитcatch-блоки, которые проглатывают ошибку, включая те, что только логируют её. См. Гигиена кода. - Новое:
todo-reportсобирает комментарииTODO/FIXME/HACKвместе с их текстом, с--tagsи «трещоткой»--max. См. Гигиена кода. - Новое:
scripts-checkсверяет скриптыpackage.jsonс README/документацией и CI-воркфлоу, аorphan-testsнаходит тестовые файлы, у которых пропал исходник. См. Проверка согласованности. - Новое:
stale-ts-ignoreнаходит@ts-ignore, который больше ничего не подавляет, сравнивая два реальных тайпчека всего проекта. См. Устаревшие @ts-ignore. - Добавлено в программный API: функции
run*()иrender*Report()новых команд. - Изменено: граф импортов и поиск настоящих комментариев вынесены из отдельных команд в общие утилиты, которыми теперь пользуются несколько команд; загрузчик
tsconfig.jsonуreadme-checkвынесен так же.
DevToolz 0.1.0
- Первый релиз: один бинарник
devtoolzс шестью командами. См. Обзор. strip-commentsиconsole-stripубирают комментарии и оставленныеconsole.log/debugger; по умолчанию — превью,-yзаписывает,--diffпоказывает unified diff по каждому файлу. См. Очистка кода.dead-exportsнаходит именованные экспорты, которые нигде не импортируются, с учётом публичных точек входа пакета, цепочек реэкспорта и воркспейсов. См. Мёртвые экспорты.case-checkнаходит импорты, регистр которых не совпадает с файлом на диске, с--fix. См. Проверка регистра.exports-doctorиreadme-checkпроверяют пакет со стороны потребителя: заявленные вpackage.jsonпути против диска и блоки кода в README против собственных типов пакета. См. Проверка пакета.
Network Dashboard 0.4.2
- Несколько примеров
addMock/addMockToGroupв README и гайде по мокированию не указывали обязательное полеenabled— при копировании как есть правило не прошло бы типопроверку, а если это обойти — мок молча пропускался бы в рантайме (addMock/addMockToGroupпроверяютrule.enabledперед применением). - Задокументированная сигнатура
addMockToGroupуказывалаrule: Partial<MockRule>— реальный типOmit<MockRule, 'id'>, все поля кромеidпо-прежнему обязательны.
Responsive Media 2.0.2
- Пример
useContainerStateв гайде по интеграции с Vue вызывалuseTemplateRef('card')без явного типового аргумента — дефолт самого Vue (unknown) не удовлетворяет параметруuseContainerState'sRef<Element | null>, поэтому пример в исходном виде фактически не компилировался. Теперь показанuseTemplateRef<HTMLDivElement>('card').
State Machine 0.2.7
- Примеры кода в README всё ещё импортировали нескопированное имя
vue-state-machineв пяти местах вместо реального опубликованного имени@macrulez/vue-state-machine— остаток от переноса пакета под scope. - Пример
CheckoutCtxв гайде по визардам был объявлен черезinterface— TypeScript не даётinterfaceнеявную индексную сигнатуру, нужнуюCtx(Record<string, unknown>), поэтомуWizardStep<CheckoutCtx>фактически не проходил типопроверку в том виде, в каком был написан. Заменено наtype-алиас, как и в остальной части этого же документа.
24 сентября
Color Value Tools 1.2.2
- Новые импорты по подпутям для групп функций:
color-value-tools/parse,/convert,/manipulate,/palette,/a11yи/cache. Они работают и черезimport, и черезrequire, и поставляются со своими TypeScript-типами. Импорт из корня пакета работает как раньше. - ESM-потребители теперь получают ESM-декларации типов — раньше ESM-сборка использовала
.d.tsот CommonJS. - Пакет помечен как
sideEffects: false, поэтому бандлеры надёжнее удаляют неиспользуемый код. - CLI
cvtтеперь использует собственную сборку пакета, а не отдельную копию библиотеки. Команды и вывод не изменились.
Image Kit 1.2.0
- Записи
sourcesтеперь могут нести собственныеwidth/heightдля брейкпоинтов арт-дирекции, чья обрезка отличается по соотношению сторон от корневого изображения — либо как{ src, width, height }, либо через объектImageMeta, переданный напрямую (например, из импорта?vik). Если задать брейкпоинту собственные размеры,<VImage>резервирует плейсхолдер — и превью blurhash — под пропорции именно этого брейкпоинта, а не всегда откатывается к корневому изображению, поэтому переключение брейкпоинтов больше не вызывает скачок вёрстки после загрузки настоящего фото. Записи безwidth/heightпродолжают работать в точности как раньше. - Ключ
sources, для которого нет подходящего брейкпоинта, теперь выводит предупреждение в режиме разработки — с именем ключа и списком доступных брейкпоинтов — вместо того чтобы молча ничего не делать.
Image Kit 1.1.8
<VImage>больше не навязываетdisplay/размеры блока/object-fitинлайн-стилями там, где это не нужно — инлайн-стили всегда перебивают класс, который применяет ваше приложение на том же элементе, независимо от специфичности. Явно заданный пропfitпо-прежнему применяется инлайном (гарантированно побеждает). Если проп не задан, дефолтobject-fit: coverтеперь приходит из обычного, переопределяемого CSS-класса — применяется только когда блок изображения действительно ограничен (layout"fill"/"fixed", либо заданы одновременноwidthиheight), а иначе не применяется вовсе, так какobject-fitбез ограниченного блока не имеет эффекта. То же самое касается базовых стилейdisplay/размеров —width: 100%; height: autoтеперь применяется только когда заданы одновременноwidthиheight(иначе не из чего сохранять пропорции), поэтому<VImage>без этих пропов, размер которого управляется вашим собственным CSS черезmax-height/max-width, сохраняет естественные пропорции вместо растягивания на всю ширину контейнера.- Исправлено: стили пакета (анимация shimmer-плейсхолдера, а теперь и классы выше) были недоступны через
import '@macrulez/vue-image-kit/style.css'— файл не был объявлен вexportsпакета, из-за чегоplaceholderMode="shimmer"нигде фактически не работал. Модуль Nuxt теперь подключает стили автоматически. - Исправлено: удаление обёртки в 1.1.7 приводило к предупреждению Vue о рассинхронизации при гидратации на каждой SSR-странице — проверка, которая решала, что рендерить, не могла отличить «сервер» от «самого первого рендера на клиенте во время гидратации», из-за чего они никогда фактически не совпадали. Теперь компонент безопасен для гидратации.
InView 0.2.3
- Исправлено: задержка стаггера у
createRevealController(--reveal-delayи инлайн-стильtransition-delay, который она выставляет) раньше оставалась на элементе навсегда после его появления — из-за этого любой другой transition на том же элементе, например hover-эффект на ссылке с классом.reveal, молча наследовал ту же задержку. Теперь задержка автоматически снимается сразу после завершения самой reveal-анимации (а если она вообще не запускается — например, из-заprefers-reduced-motionили отсутствия подходящегоtransitionв CSS — то по истечении короткого запасного таймера), поэтому последующие transition на элементе больше не задеты. Настраивать ничего не нужно — это просто новое поведение по умолчанию.
23 сентября
Image Kit 1.1.7
<VImage>больше не рендерится внутри обёртывающего<span>. Раньше реальный<img>(и, пока идёт загрузка, любой активный blurhash-<canvas>/LQIP-ThumbHash-<img>/сплошной цвет или shimmer-<span>) лежали внутри постоянного позиционирующего<span>— это мешало встраивать компонент в чужую вёрстку, которая ожидает владеть элементом напрямую. Теперь каждый вид плейсхолдера рисуется CSS-фоном (background-color/background-image) прямо на том же элементе, который затем покажет настоящее фото — до начала загрузки это отдельный элемент, который полностью заменяется (а не оборачивает) реальным<img>/<picture>.class/style/data-*и другие атрибуты теперь долетают до этого единственного реального элемента. Плавный кроссфейд «блюр просвечивает сквозь проявляющееся резкое фото» технически больше недостижим — переключение мгновенное; новый пропfadeIn(см. ниже) — другой, более простой эффект, а не замена старого.- Новый проп
fadeInу<VImage>(по умолчаниюfalse) — опциональное плавное появление (opacity0→1, ~0.3с) при монтировании.
12 сентября
Color Value Tools 1.2.1
isReadableOnBackground(): полеwcagLevelтеперь вычисляется по тому же эффективному цвету фона, что иminContrastRatio/readable, для фонов'semi-transparent'/'gradient'— раньше всегда использовался'#ffffff'.
Command Palette 0.2.9
bindShortcutsтеперь регистрирует горячие клавиши и для вложенныхsubCommand, а не только для команд верхнего уровня.- Резервный обработчик горячих клавиш (
runFallback, срабатывающий без смонтированного<CommandPalette>) теперь корректно открываетpage-команды безsubCommandsи учитываетconfirm/частоту использования, как основнойexecuteCommand. - Подсветка совпадений в
CommandItemпереиспользует диакритико-независимый скорерFuzzySearchвместо отдельной, менее точной реализации. - Nuxt-модуль теперь регистрирует компоненты пакета через
addComponentи автоимпортирует все composables/фабрики, а не только 3 из них. isLoadingвCommandPalette.vueзаменён на счётчик активных запросов — параллельные независимые поисковые пайплайны больше не гасят индикатор загрузки друг друга раньше времени.- Слияние асинхронных результатов поиска теперь заменяет уже слитый синхронный результат более точным асинхронным при совпадении id, а не оставляет «первый зарегистрированный».
PaletteProvider(testing.ts) теперь также предоставляетPALETTE_REGISTRY_KEY— именованные инстансы (useCommandPalette('name')) корректно резолвятся под ним.- Глобальный hotkey-тоггл (
installPalette) иtoggle()/open()/close()изuseCommandPalette()приведены к единой логике открытия/закрытия (включая очисткуhistory). - Опции Nuxt-модуля (
vCommandPalette), содержащие функции (onOpen,onError,search,onSearchи т.д.), больше не сериализуются в клиентскийruntimeConfig.public— через эту границу проходит только сериализуемая часть.
CSS Magic Gradient 1.3.1
- В
css-magic-gradient/vueиcss-magic-gradient/reactдобавлены реактивные хукиuseMonochromaticGradientиuseHueWheelGradient— ранее эти генераторы были доступны только как обычные функции, без реактивной обёртки, в отличие от остальных 8 генераторов пакета.
Error Boundary Kit 0.3.5
<AsyncBoundary>теперь регистрируется Nuxt-модулем как глобальный компонент, наравне с<ErrorBoundary>.createHttpReporterтеперь возвращает функцию отписки отpagehide, чтобы слушатель можно было снять.- Список
autoImportsNuxt-модуля дополнен — теперь покрывает все composables/фабрики пакета, а не только 3 из них.
Feature Toggles 0.2.0
- В тип
FlagSourceдобавлено значение'live'для флагов, обновляемых через SSE/WebSocket. <Feature>безnameи безgroupтеперь выводит предупреждение в dev-режиме вместо тихого рендера fallback/ничего.- Nuxt-модуль теперь принимает
loader/rulesв собственном конфиге и автоимпортирует composables пакета.
Form Schema 0.2.8
@macrulez/nuxt-vue-form-schemaтеперь либо опубликован в npm по-настоящему, либо все упоминания об установке убраны из документации.- Асинхронная функция
options()поля больше не запускается на каждое изменение значения формы — только при изменении её собственныхoptionsDeps. isValidтеперь учитывает ожидающий асинхронный валидатор, а не толькоsubmit().- Ключ
persistKeyпо умолчанию больше не строится как простой список имён полей через запятую — устранена коллизия хранилища между разными формами с одинаково названными полями. remove/move/swapвuseFieldArrayтеперь корректно перенумеровываютform.errors/form.touched.- Панель Vue DevTools подключается автоматически при установке плагина — без отдельного вызова
installFormDevtools(app).
i18n Kit 0.4.12
- Типы
I18nKitConfig,LocaleConfigиLocaleMetaтеперь экспортируются изvue-i18n-kit/config— их можно использовать для типизации собственногоi18n-kit.config.json. - Удалён неиспользуемый мёртвый код
src/cli/commands/init.ts(runInit) — не был подключён ни к CLI, ни к тестам, и использовал устаревший синтаксис плюрализации, несовместимый с ICU-движком пакета.
Image Kit 1.1.6
v-lazy-imgтеперь использует общий пулIntersectionObserverвместо создания отдельного наблюдателя на каждый элемент.layoutбез явного значения теперь получает тот же авто-расчётsizes, что иlayout="responsive".- Blurhash- и LQIP/thumbhash-плейсхолдеры больше не могут одновременно монтироваться при передаче обоих пропов — восстановлен единый приоритет плейсхолдеров.
InView 0.2.2
- Nuxt-модуль теперь также регистрирует компонент
<InView>и паруsetViewportDefaults/viewportDefaults, а не только composables/утилиты/директивуv-reveal.
Network Dashboard 0.4.1
- Исправлена собственная типопроверка пакета (
npm run type-check) — расширена декларация модуля*.vue, чтобы учитывать именованные экспорты типов (например,NetworkDebuggerProps) из<script setup>-компонентов. - Удалён/переработан мёртвый и расходящийся код composables
useHotkey.tsиuseLogFilter.ts, дублировавший инлайн-логикуNetworkDebugger.vue. - Устранена дормантная утечка состояния
localStorageмежду тестами — добавлен сброс мока в тестахpersistToStorage. - Исправлены примеры импорта из подпутей в JSDoc-комментариях (
devtools.ts,adapters/sentry.ts,adapters/opentelemetry.ts) — все три символа доступны только из корня пакета.
OS Detect 2.2.1
detectIsiOS()(устаревший алиас) теперь выводит предупреждение об устаревании один раз, а не при каждом вызове.useIsWindows11()(Vue и React) больше не вызывает setter/присваивание ref после размонтирования компонента.detectIsWindows11()теперь кэшируется, как и остальные детекторы, с поддержкой сброса черезresetDetectionCache().- Версия в
package-lock.jsonсинхронизирована сpackage.json.
Responsive Media 2.0.1
isAbove(key)теперь корректно возвращаетfalseдля нераспознанного ключа брейкпоинта — исправлено в core-, Vue- и React-реализациях.- Две независимые реализации
isSSR()в пакете объединены в одну, более строгую проверку (наличиеwindowиwindow.matchMedia). useBreakpoints()(Vue) теперь учитываетinject()/DI, как иuseResponsive().useMediaQuery()(Vue) больше не может утечь слушательmatchMediaпри вызове вне активного компонента — composable всегда возвращает функцию отписки.- React
useContainerState()пересоздаётResizeObserver, еслиref.currentбылnullпри первом срабатывании эффекта (например, элемент под условным рендером/порталом). hydrate(initialState)больше не отбрасывает молча ключи, которых нет в текущем состоянии — теперь выводится предупреждение.- Добавлено базовое покрытие тестами для Vue- и React-адаптеров (ранее тестировалось только фреймворк-независимое ядро).
Rest Pipeline JS 2.1.5
- Согласовано кэширование клиента по конфигурации между
useRestClientVue(кэшируется) иuseRestClientReact(не кэшировался) — теперь единый документированный контракт. - Уточнена и задокументирована логика успеха/неудачи WebSocket-этапа пайплайна — больше не решается только по
close.wasCleanбез учёта видимого срабатыванияonError.
State Machine 0.2.6
MachineStore.register()выводит предупреждение в dev-режиме при коллизии id вместо тихой перезаписи существующей записи.useMachine()теперь автоматически отменяет регистрацию машины вMachineStore/реестре DevTools при размонтировании владеющего компонента.useSharedMachine(config, options)предупреждает в dev-режиме, если повторный вызов с тем же id передаёт отличающиесяoptions(включаяpersist).
Storage Kit 0.2.7
useStorage()выводит предупреждение в dev-режиме, если второй вызов с тем жеkey+targetпередаёт отличающиеся опции (ранее — тихо игнорировались).- Добавлено dev-предупреждение о том, что
throttleимеет приоритет надdebounce, если заданы оба. - Добавлено dev-предупреждение о том, что
httpOnlyу базового (клиентского)useCookie()не имеет эффекта вне Nuxt SSR. compress()теперь так же явно сообщает о неудаче/недоступности, какencrypt()иsign(), вместо тихого перехода в режим passthrough.- React-версия
useStorageреагирует на изменениеkey/targetмежду рендерами, как и Vue-версия.
Toast Kit 1.1.1
- Проп
expandуToastContainerтеперь используется по назначению (был объявлен, но нигде не читался). ToastItem.isGroupedтеперь отражает реальное состояние группировки, а не всегдаfalse.toast.update()/queue.update()перезапускает таймер автозакрытия при измененииduration.CHANGELOG.mdпакета синхронизирован с актуальной версиейpackage.json.
Virtual Scroller Kit 0.3.1
- У
VirtualGridдобавлены пропыcontainerRole/itemRoleдля переопределения ARIA-ролей, как уVirtualList/VirtualTree/VirtualSelect. - Добавлено тестовое покрытие для
InfiniteLoader.vue(пороговая логика, направление подгрузки, защита от параллельных загрузок, сохранение позиции скролла при подгрузке в начало списка). - Поле
engines.nodeвpackage.jsonобновлено — минимальная версия теперь соответствует реальным требованиям тулчейна (Node 20/22).
Worker Kit 0.2.5
run()/map()пула воркеров (createWorkerPool/useWorkerPool) больше не отбрасываютctx.reportProgress()/ctx.reportChunk()— прогресс и чанки теперь доступны черезWorkerPool.- У
useWorker()появился явный методterminate(). - Воркер, упавший с ошибкой (
Worker.onerror), теперь пересоздаётся при следующемrun(), а не переиспользует сломанный инстанс. - При
streaming: falseвызовctx.reportChunk()выводит предупреждение в dev-режиме вместо тихой потери чанка. - Из
package.jsonубрано устаревшее ключевое слово"nuxt"(Nuxt-модуля в пакете нет). - Поля
WorkerComputedResultобёрнуты в Vuereadonly()— типизацияreadonlyтеперь подкреплена рантаймом. RetryStrategyOptions/StreamingOptionsиспользуются как реальные типы параметровUseWorkerOptions/UseSharedWorkerOptionsвместо дублирования полей инлайн.