Contexto
O web app (PWA) precisa de um mecanismo de aceite de EULA para cobrir o uso via browser. O app Electron ja tem a spec completa em pianolouvorja/app/.planning/eula/ — esta issue e o equivalente para o web.
Comportamento esperado
- Primeira visita: Usuario ve modal/tela de EULA antes de qualquer interacao
- Aceite: Grava flag no
localStorage (eula_accepted_v1) e libera o app
- Recusa: Redireciona para pagina de saida / fecha modal
- Versao atualizada: Quando
EULA_VERSION muda, re-exibe o EULA
- Ja aceito: Nao exibe novamente (ate mudar a versao)
Implementacao sugerida
Vue Router guard
// src/router/index.ts
router.beforeEach((to) => {
const eulaAccepted = localStorage.getItem('eula_accepted_v1')
if (!eulaAccepted && to.name !== 'eula') {
return { name: 'eula' }
}
})
Rota /eula
- Tela full-screen com texto do EULA
- Botao "Aceitar" →
localStorage.setItem('eula_accepted_v1', EULA_VERSION) → redireciona para home
- Botao "Recusar" → mensagem de saida
Versionamento
- Constante
EULA_VERSION = '1.0' no router ou store
- Comparar com valor gravado no localStorage
- Se diferente, re-exibir EULA
Referencia
Tasks
Contexto
O web app (PWA) precisa de um mecanismo de aceite de EULA para cobrir o uso via browser. O app Electron ja tem a spec completa em
pianolouvorja/app/.planning/eula/— esta issue e o equivalente para o web.Comportamento esperado
localStorage(eula_accepted_v1) e libera o appEULA_VERSIONmuda, re-exibe o EULAImplementacao sugerida
Vue Router guard
Rota /eula
localStorage.setItem('eula_accepted_v1', EULA_VERSION)→ redireciona para homeVersionamento
EULA_VERSION = '1.0'no router ou storeReferencia
pianolouvorja/app/.planning/eula/SPEC.mdpianolouvorja/app/docs/LEGAL/EULA.md(v1.0, 139 linhas)Tasks
/eulacom texto completo do EULAbeforeEach)EULA_VERSIONconstantedocs/LEGAL/EULA.mddo app