Skip to content

v0.10.0

Choose a tag to compare

@vanilla-wave vanilla-wave released this 29 Sep 12:10
· 255 commits to main since this release
7e695a2

New

  • vitest run (vitest 4.1.11 на Vite 8.0.16) работает в браузерной оболочке rifty, оба пула — матрица совместимости docs/public/compat/vitest.md
  • Опубликованы измеренные браузерные/персистентные полы (Chromium 108, ES2022) и метод замера; CI-гейт отсекает post-ES2022 синтаксис и builtins в пакетах и playground
  • worker_threads.Worker/fork запускаются с Node-опциями старта: -r/--require, -C/--conditions, --experimental-import-meta-resolve — preloads, пользовательские условия резолвера, import.meta.resolve(spec, parent) (ADR-0449)
  • fork с serialization: 'advanced' (vitest forks pool): structured clone над IPC-каналом с Node-правилами v8-сериализатора — views копируются в точные байты, бренд Buffer сохраняется, отказы — named-ошибки (ADR-0448)
  • Жизненный цикл Node-процесса (ADR-0445): uncaughtException/unhandledRejection/uncaughtExceptionMonitor до терминальных путей, статусы как в Node (1 без слушателя, 7 при бросающем слушателе), точная семантика exit()/exitCode
  • Worker#stdout/stderr — Node-Readables с авто-пайпом; fork наследует stdin; живой Worker/порт/parentPort держит родителя через ref/unref (ADR-0446/0447)
  • vm.constants и named-ошибка DONT_CONTEXTIFY (jsdom под vitest environment: 'jsdom' падает по имени); vm.Script/runInThisContext уважают lineOffset/columnOffset и называют скрипт по его sourceURL (ADR-0450)
  • fs.statfsSync, child_process.spawnSync, process.memoryUsage существуют и линкуют named-импорты vitest/tinyexec; вызов — named NotImplementedError (ADR-0443)
  • node:http.Agent/https.Agent с Node-формой (subclassable), конструктор — named gap: playwright-core падает по имени, а не Class extends value undefined (ADR-0464)
  • npm-client: значения overrides читаются как npm — версия/диапазон ({"vite": "8.0.16"}) пинует пакет вместо запроса packument 8.0.16 (ADR-0451)
  • @riftydev/agent: нативный каталог моделей pi с per-model дефолтами, нативные retry/compaction и восстановление контекста, изображения во входных промптах, бюджет 600 с и бюджетные квитанции. Breaking: сессионные settings/streamFn убраны; скраб секретов — один раз на входе провайдера, только в тексте ошибок (ADR-0466/0475/0479)
  • Playground: страница ручного браузерного пруфа (support, реальный Vite install/build, durable reload/reopen, копируемый отчёт об устройстве); редактируемый каталог моделей с отдельным провайдером на модель; секреты каталога (auth/key/token/secret/cookie/session, bare Bearer) маскируются до попадания в чат (ADR-0479)
  • agent-bench: сравнение записанных прогонов с per-task/lane дельтами и видимыми регрессиями; сводки коммитятся как gzip-артефакты с проверяемыми SHA256

Fixed

  • child.stdout.pipe(process.stdout) больше не крашится: Readable.pipe следует Node-правилу end ({end: false} и process.stdout|stderr не завершаются, такой пайп отцепляется в конце источника)
  • Дочерний процесс с наследуемым stdin (дефолт fork) читает ввод через ридер родителя — родитель больше не «зависает» после выхода ребёнка
  • Провальное создание Worker не оставляет stdio-слушателей у владельца; env: null наследует окружение родителя, как в Node
  • Парити-раннер больше не наследует FORCE_COLOR от Playwright-воркеров — Node-вывод в сравнениях чистый
  • «Continue with …» в playground: отредактированный черновик уходит как есть, авто-восстановленный промпт дропается — без дублирующих user-ходов; ожидающее вложение уходит одно
  • No-COI команды и runBin завершаются Node-статусом при фатальном выходе (exit(7)/exit(n) в слушателе, мгновенный останов таймеров), а не «сливаются» в natural exit 0; ретиред-транспорт отменяет застрявшую PTY-работу при закрытии проекта