Files
transcriber/tasks/items/installable-pwa.md
T
av 115b3796e8 Нарезка задач под целевое состояние: PWA, вход, хранилище
Роадмап: web-access переименована под приложение, которое ставится на
телефон; заведена цель ready-notification — уведомление о готовности
без открытого приложения.

Беклог: десять задач. Многопользовательская цепочка (oidc-login,
record-ownership, telegram-account-link), веб (json-api-for-spa,
spa-skeleton, upload-and-status-screen, records-list-screen,
installable-pwa), уведомления через apprise и ntfy, разведка выбора
фреймворка. Очередь: долги, хранилище, вход, приложение.

Решение сменилось с htmx на SPA, поэтому conventions/web-ui.md снята
целиком и оставлена честной строкой до итога разведки. Открытые вопросы
архитектуры, границы паспорта и триггеры метки ревью приведены в
соответствие.
2026-08-10 21:36:54 +03:00

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.