May 20th, 2026
Cloudflare Worker (rox-one-release-feed.worker.ts) научился отдавать релиз-бинари с R2 как primary с прозрачным fallback на GitHub. ENV-флаг включает поведение для постепенной миграции на CDN.
{R2_PUBLIC_BASE_URL}/{channel}/{filename}; 404 — прозрачный fallback на GitHub Release; non-404 ошибка — 502 без retry на GitHub.Прозрачно для пользователей; ускорение загрузки увидите после CF enable phase.
PR #332 — R2-primary fallback.
May 20th, 2026
Новый workflow linear-pr-sync.yml зеркалит жизненный цикл PR'ов в Linear-проект «ROX.ONE GitHub Roadmap Sync». Команда видит roadmap-состояние без переключения между GitHub и Linear.
opened, edited, closed — для PR'ов, нацеленных в main.e111fcdf... (PZD team), project ID — соответствующий roadmap.LINEAR_API_KEY в secrets.Откройте новый PR в репозиторий — через ~30 секунд соответствующая issue появится в Linear-проекте. При merge'е status переключится автоматически.
PR #321 — PR-to-Linear sync workflow.
May 20th, 2026
В mac-diag-smoke.yml добавлен arch=x64 в matrix. Сейчас smoke-тесты гоняются на 4 комбинациях: macos-14 × {arm64, x64} и macos-15 × {arm64, x64}. macOS 13 (Ventura) остаётся исключённым.
ROX-ONE-x64.dmg) запускаются на Apple Silicon runner'ах через Rosetta — это реальный сценарий пользователей, которые ставят x64 версию на ARM Mac.release/mac-arm64/ROX.ONE.app; x64 jobs — release/mac/ROX.ONE.app.RoxDesignRuntimeManager init-markers в /tmp/rox-design-smoke.log в течение 60 секунд после запуска.CI-only, но видно в Actions tab — теперь 4 mac-smoke jobs на каждый PR, затрагивающий релизный пайплайн.
PR #325 — macOS x64 Rosetta smoke.
May 20th, 2026
Каждая nightly-сборка теперь получает структурированный release-notes.json с массивом highlights — все PR'ы, смерженные с момента предыдущего nightly tag'а.
{ number, title, url, mergedAt, author } — JSON-сериализуем, без markdown-парсинга на стороне consumer'а.release-notes.json загружается как Release-asset рядом с бинарями.Скачайте nightly-релиз — рядом с .AppImage/.exe/.dmg будет release-notes.json со списком merged PR'ов с последнего nightly tag'а.
PR #327 — release-notes.json генератор.
May 20th, 2026
Большой if (sessionManager) cleanup-блок в before-quit handler'е apps/electron/src/main/index.ts вынесен в отдельный класс QuitOrchestrator — без изменения наблюдаемого поведения.
QuitOrchestrator.register(handler, name) — порядок задаётся декларативно, не цепочкой if-блоков.quit-orchestrator: handler-X started/completed — отладка quit-фриза становится тривиальной.Прозрачно для пользователей — но quit стал предсказуемым и больше не зависает на edge-cases.
PR #326 — QuitOrchestrator extract.
May 20th, 2026
Старт ROX.ONE стал быстрее: импорт @rox-one/shared/skills вынесен из top-level в три async call site. Skill-каталог больше не блокирует boot-pipeline.
import { loadAllSkills, loadSkillBySlug } на top-level в session-manager-helpers.ts и SessionManager.ts — bundler включал каталог в main chunk.await import('@rox-one/shared/skills') в каждом из трёх call site'ов — все внутри async-функций. Каталог загружается по требованию.Сравните «время до первого сообщения» в существующей сессии и в свежем cold-start — заметно отзывчивее.
PR #328 — defer skill catalog.
May 20th, 2026
Вторая волна интеграционных primitives — три feature-branch'а объединены в один merge: телеметрия производительности Rox Design panel, CSS-cleanup на destroyEntry и UI-баннер при крашe sidecar.
destroyEntry вызывается removeInsertedCSS — устраняет утечки CSS-правил между Rox Design сессиями. До фикса повторное открытие могло наследовать стили предыдущей сессии.rox-design:sidecar-exited IPC event'е с unintentional flag. Содержит кнопки «Перезапустить» и «Отправить отчёт».В Settings → Observability включите perf telemetry — увидите latency-метрики Open Design. Если sidecar упадёт случайно — увидите чёткий баннер с диагностикой.
PR #355 — Wave 2 (3 swarm-branches).
May 20th, 2026
Первая волна swarm-разработанных фундаментальных примитивов для ROX integration framework объединена в одном merge. Спецификация целостности — docs/superpowers/specs/2026-05-20-rox-integration-vision-design.md.
integrationId.Прозрачно для пользователей — фундамент для будущих интеграций (например, Slack или Notion).
PR #349 — Wave 1 (4 swarm-branches).
May 20th, 2026
Закрыт скрытый блокер: electron-builder.yml при packaging «съедал» nested node_modules из resources/rox-design/app/, и зависимости вроде better-sqlite3 и blake3-wasm не попадали в инсталлятор.
!node_modules/**/* exclusion на строке 72 имел приоритет над resources/rox-design/**/* include на строке 33 — last-wins glob семантика.resources/rox-design/**/node_modules/**/* после exclusion-правила, восстанавливающий nested deps.afterPack hook верифицирует наличие критичных пакетов внутри packaged-tree — fail-fast при следующей регрессии.Установите ROX.ONE из последнего packaged-релиза, откройте Open Design — sidecar стартует без «module not found» ошибок.
PR #340 — B-H1 node_modules include + post-pack assertion.
May 20th, 2026
Три аудит-finding'а закрыты в runtime-слое embedded Open Design: per-file SHA-256 verify при каждом запуске, сериализация view-show вызовов и защита от race в stop().
RoxDesignRuntimeManager верифицирует SHA-256 пяти security-perimeter entry points из MANIFEST.json.fileDigests на каждом старте. Modify-after-install attack блокируется — malware не может подменить .js/.mjs файлы между install и launch.ManagedRoxDesignView отслеживает in-flight loadPromise per-entry. Второй вызов show() ждёт завершения первого loadURL — больше нет race-condition, когда второй show прерывает первый mid-flight.RoxDesignRuntimeManager.stopping = true до child.kill — handler child.once('exit') early-return'ит вместо emit'а sidecar-exited IPC. Intentional shutdown больше не выглядит как crash.stopping reset'ится в false после stopProcesses() — можно перезапускать без перезапуска приложения.Откройте Open Design, закройте его кнопкой в TopBar, откройте снова — без crash-banner. Если кто-то изменит .js файлы в resources/rox-design/ — runtime откажется стартовать с понятным error.