feat(pwa): надёжное оповещение об обновлении через version-watch #114
Reference in New Issue
Block a user
Delete Branch "feat/pwa-version-watch"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что и зачем
SW-оповещение об обновлении в desktop (PWA/SSR) не срабатывало в проде. Диагностика: вся цепочка (SW отдаётся корректно, register-service-worker шлёт событие, boot pwa-update показывает тост) собрана верно — но триггер висит на lifecycle service worker'а, который ненадёжен: не пробрасывает событие на iOS standalone PWA, при первой установке шлёт cached вместо updated, и молчит если бинарь SW не изменился.
Решение (фаза «сейчас»)
Развязка детекта обновления от SW. Сравнение версий:
SW оставлен только для кэша/офлайн и применения обновления; applyUpdate сделан устойчивым (есть waiting-SW → SKIP_WAITING→reload, иначе прямой reload).
SPA
Ноды нет → /version отдаёт index.html → клиент видит не-JSON и молча no-op. Приложение не ломается; отображение версии работает (запечена в бандл).
Заложено под микрофронты
Стор useUpdateWatch — реестр компонентов (ключ → {running, available}). Сейчас только shell. Расширения добавятся ключами ext:*: их available придёт из getDesktop-реестра бэкенда, тост — контекстный (только для активного компонента).
Инфра
Codegen не нужен (GraphQL-схему не трогал). /version отдаёт сама нода — правок nginx не требуется.
Generated with Claude Code
53095713c4to3ba3a867ad