Автор описывает ситуацию, когда HTML-таймер, созданный ChatGPT, перестает работать при выключении экрана телефона. Это происходит из-за ограничений платформ: функции setTimeout и setInterval при переходе вкладки в фон работают с задержками или полностью замораживаются, а Notifications API не позволяет планировать уведомления на конкретное время.
Web Push уведомления, доступные в iOS 16.4+ для PWA, что требуют наличия сервера с HTTPS, VAPID и подписками, что делает их непригодным для локальных таймеров. Спецификация Notification Triggers была протестирована Chrome в 2020–2021 годах, но проект был закрыл.
Для решения этой проблемы для личных инструментов автор разработал бесплатное приложение Kapsula, доступное в сторах для Android и iOS. Оно запускает HTML в изолированном iframe и предоставляет нативный мост window.kapsula для доступа к системным будильникам (AlarmManager в Android и локальные уведомления в iOS).
В Kapsula можно запланировать до 16 будильников на один проект. Логикака работает так: код заранее передает расписание в операционную систему, так как JavaScript в фоне не исполняется. При включенном экране работает живой JS, а при выключенном или свёрнутом приложении ОС triggering the notification. Kapsula не поддерживает выполнение произвольного кода в фоне, голосовые подсказки при выключенном экране и серверные push-уведомления.





