diff --git a/README.md b/README.md index 55e7a6a..f9ced0e 100644 --- a/README.md +++ b/README.md @@ -470,6 +470,28 @@ `Authorization: Bearer mcp_…` или `` в заголовке); оставь доступ только из доверенной сети, иначе любой сможет читать метрики. +## PWA (установка на домашний экран) + +Панель — устанавливаемое веб-приложение: Chrome/Edge («Установить» в адресной +строке) и iOS Safari («На экран «Домой»») дают иконку и полноэкранное окно +без адресной строки. + +Работает это так: + +- **service worker** (`/sw.js`, без зависимостей): навигации — network-first + (свежая оболочка, при офлайне — последняя закэшированная), hashed-ассеты + `/assets/*` — cache-first (неизменяемые), мелкая статика (манифест, + favicon, logo, шрифты) — stale-while-revalidate; +- **никогда не кэшируется** — `/api/`, `/auth/`, `/webhooks/`, `/mcp`: + данные мониторинга всегда идут в сеть, офлайн страницы показывают + ошибку запроса и офлайн-баннер; +- обновление после деплоя — просто открыть панель при сети: свежий + `index.html` подтянется, hashed-ассеты доедут за новыми ссылками. + +Мета и иконки — в `public/manifest.webmanifest` и `public/icons/` (PNG +сгенерированы из `public/favicon.svg` через `rsvg-convert`, maskable — +content в безопасной зоне). + ## Статус - [x] Этап 1 — скелет: FastAPI, SQLite-схема, ingest, servers API, docker