v1.36.0 — Web Push pro guardião
Fecha o laço central do produto: pedido → aviso → decisão. Antes, o Web Push era exclusivo da criança e o guardião só descobria um pedido abrindo o painel ou pelo digest de email das 22h.
O que muda pra quem usa
O toggle Notificações push em Configurações sai de "Em breve" e passa a funcionar. Com ele ligado, o guardião recebe no celular:
- Filho pediu acesso — na hora, com o nome dele e o que foi pedido
- Tempo de tela esgotado
- Tentativa de acesso fora do horário (hora de dormir / dia bloqueado)
No máximo um aviso por filho, por tipo, por dia. Tocar na notificação abre o painel direto nos pedidos pendentes.
Todos os guardiões ativos recebem — admin ou collaborator. Sem gate de licença: um controle parental que não avisa o pai está quebrado, não "limitado".
iPhone: o painel agora é instalável (manifest). O Safari só entrega Web Push em site adicionado à Tela de Início — sem isso, a feature nasceria cega no iOS.
Técnico
- Migração 024 (
guardian_push_subscriptions+guardian_push_dedup), DB v23→v24 - 3 rotas
/guardian/push/{key,subscribe,unsubscribe}(auth: nonce +requireCollaboratorOrAbove) GuardianAuth::isActiveGuardian(),PushSender::sendToGuardians(),GuardianNotifier(funil único, dedupe por evento no fuso do site)sw.jsem JS puro (sem Workbox) — push não exige que o SW controle a página, então o painel dispensa o PWA inteiro que o app-child precisa- GC do dedupe (>30d) no cron diário
Deploy idempotente: tabelas novas com IF NOT EXISTS, nenhum dado existente tocado, caminho de push da criança inalterado. Rollback = desativar o plugin.
Suítes: PHP 582 · app-parent 319 · app-child 110. CI 4/4.
Spec e plano em docs/superpowers/.