Секции «Ядро» и «Инфра» слиты в одну «Очередь»: полок домена у проекта нет, а две секции держали два независимых порядка вместо одного. Порядок: красный гейт, потом долги, задевающие интерфейсы, потом хранилище, вход, разграничение, приложение. Разведка потолков SpeechKit последней — она обслуживает направление, а не очередь.
3.2 KiB
3.2 KiB
✨ Сделать приложение устанавливаемым на телефон
- Тип: feature
- Категория: Очередь
- Зачем: Приложение, живущее вкладкой браузера, теряется среди прочих: ярлыка на экране у него нет.
- Теги: goal:web-access
Двигает пункты 5 и 6 «Завершения» цели: приложение ставится с телефона и запускается с ярлыка без адресной строки, а открытое без сети показывает это состоянием.
Берётся после того, как есть что ставить, — то есть после
records-list-screen.
Затрагивает
- манифест приложения: имя, иконки под размеры экранов, цвета, режим показа;
- service worker: регистрация, обновление версии, поведение без сети;
- раздача манифеста и service worker с правильными заголовками и без длинного кэша;
- версионирование собранной статики, чтобы установленное приложение обновлялось;
docs/conventions/web-ui.md— раздел про статику и кэш;docs/security.md— service worker перехватывает запросы, и это новая поверхность.
Критерии приёмки
- Приложение предлагается к установке и после установки запускается с ярлыка на отдельном экране, без адресной строки. Оракул — проверка на телефоне и сверка манифеста инструментом браузера.
- Открытое без сети приложение показывает состояние «связи нет», а не пустую страницу и не ошибку браузера. Оракул — тест либо ручная проверка с выключенной сетью.
- Новая выкладка доходит до установленного приложения: старая статика из кэша не переживает обновление. Оракул — установка, выкладка изменённой версии, перезапуск приложения показывает новую.
- Service worker не кэширует ответы API и не отдаёт чужие данные после смены сессии. Оракул — тест: после выхода и входа другой учётной записью список записей чужих не содержит.
Рамки
Офлайн-чтения готовых расшифровок и очереди отправки без сети не делаем —
это за границей цели. Web Push не делаем: уведомления идут через apprise и ntfy,
цель ready-notification.