diff --git a/docs/TZ.md b/docs/TZ.md index 5932f29..9865042 100644 --- a/docs/TZ.md +++ b/docs/TZ.md @@ -4,7 +4,7 @@ | | | |---|---| -| Версия ТЗ | 0.46 | +| Версия ТЗ | 0.47 | | Дата | 2026-09-23 | | Статус | На обсуждении | @@ -464,6 +464,19 @@ (не localhost) браузер SW не зарегистрирует; нужен HTTPS (M7 Docker/nginx). - **Dev-режим**: SW не включён (`devOptions` выключен) — PWA проверяется на прод-сборке (`dist`), не на dev-сервере. +- **iOS Safari (0.47)**: типовые проблемы iPhone-версии устранены: + - поля/селекты/поле тегов на touch-устройствах 16px (media + `hover:none, pointer:coarse`) — иначе iOS зумит страницу при фокусе и зум + застревает; + - `100dvh` вместо `100vh` у drawer'ов, мобильного меню и модалок (низ уезжал + под панель Safari и индикатор «домой»); на старых Safari остаётся `100vh`; + - safe-area (viewport-fit=cover): тосты, контент drawer'а и топбар отступают + от индикатора «домой» и статус-бара (в PWA контент идёт под них); + `apple-mobile-web-app-*` меты: standalone для «На экран Домой» (до iOS 16.4 + манифест не читается), `black-translucent` статус-бар, короткий тайтл; + - тап-подсветка WebKit отключена (у кита есть `:active`-состояния); + - кнопка fullscreen сада скрыта, если API не поддерживается (iPhone Safari + умеет fullscreen только для video). ### 3.16. Вебхуки системы авторизации (0.35, профиль 0.36) diff --git a/frontend/index.html b/frontend/index.html index e30b1a0..a37e677 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,6 +4,11 @@ + + + + GNexus Tasks diff --git a/frontend/src/components/GardenScene.vue b/frontend/src/components/GardenScene.vue index d8e90d4..825d09a 100644 --- a/frontend/src/components/GardenScene.vue +++ b/frontend/src/components/GardenScene.vue @@ -106,6 +106,10 @@ // --- Полноэкранный режим --- +// iPhone Safari не умеет requestFullscreen() у произвольных элементов (только +// у video) — кнопка молча не работала; на iPhone прячем её (iPad поддерживает) +const canFullscreen = typeof Element !== 'undefined' && 'requestFullscreen' in Element.prototype + function onFullscreenChange(): void { isFullscreen.value = document.fullscreenElement === wrapEl.value } @@ -250,6 +254,7 @@