Proof of Light — Privacy / Privacidade
Privacy policy — website and Discord Activity
Updated October 23, 2026. Developer, operator and data controller: Rafael Assato Ando. Privacy contact: [email protected].
This policy covers the Proof of Light website, Discord Activity and their previews. You can play as guest or, when online accounts are enabled, sign in to a Proof of Light account shared with the website. Guest play does not create an account or upload guest results, except when you explicitly enable optional public Daily or Double Exposure sharing described below. Signing in with a game password does not automatically link your Discord identity. You can choose to link it separately.
What stays on your device
- Guest profile names, progress, rating, achievements, puzzle history and saved puzzle state, Sprint scores, settings and editor data are stored locally when the client allows it.
- This data supports saving and resuming play. It is separate from website data, is not synchronized between devices and is not submitted to shared online leaderboards.
- Local data stays until removed or cleared by you or the client. If persistent storage is unavailable, progress lasts only for the current session. Closing the Activity can lose interrupted or unsaved progress.
Optional online accounts
- Online accounts store a username, password and recovery-code hashes, session records, progress, rating, history, achievements, favorite puzzle references (including removal records) and Sprint results in Cloudflare D1. Passwords and recovery codes are sent over HTTPS for authentication; their original values are not stored in the database.
- Your account progress is shared with the website. Shared Sprint rankings display your account name and results. Guest data is not merged into your account; device settings, editor data and local Practice history stay local.
- A Secure, HttpOnly partitioned session cookie remembers account access inside Discord. Remember me controls persistence. Logout ends the current session; changing credentials revokes earlier sessions. Auth rate-limit records help prevent abuse.
- Account data remains until deletion or a disclosed testing reset. Delete account requires confirmation and your password and removes its related server records. Browser-only data and provider logs may remain; contact us for assistance. Never send your password or recovery code by email.
Account creation verification
Cloudflare Turnstile verifies new account registrations to reduce automated abuse. Its widget can process connection and browser signals under Cloudflare’s privacy policy. The server validates a short-lived token; the game does not store challenge tokens in D1. This check is not loaded during guest gameplay.
Discord, hosting and connection data
- The Discord SDK uses launch/session context to connect the embedded game to Discord. Guest play does not request Discord identity authorization. Optional linking/sign-in requests basic identification; only an explicitly linked Discord ID is retained. The game never reads messages.
- Discord and Cloudflare deliver the Activity and its static game files. They can process network data such as IP addresses, request paths and timestamps to operate and secure their services, under their own policies and retention practices.
- The development server does not keep request logs. The game contains no advertising or gameplay analytics, and does not upload guest gameplay data automatically.
- Sharing a puzzle copies a seed/link for you to send. Profile/editor exports produce local files; imports are processed on your device. If you send those files or links to someone, that recipient can see their contents.
Provider policies: Discord and Cloudflare. App Tester invitations are managed by Discord.
While disconnected, signed-in gameplay can queue puzzle events and Sprint results in memory for synchronization when the connection returns. These pending results can be lost if the session is closed or reloaded.
Guest browser estimate
Entering guest play stores a random identifier and a counted flag in your browser. The server keeps only a hash of that identifier to avoid counting the same browser repeatedly. It is not linked to an account, Discord identity or gameplay history. These hashes are retained to maintain a cumulative estimate from this feature’s introduction, not a count of active or unique people. Different browsers/devices or clearing storage can count again; creating an account does not remove an earlier guest count. Brief hashed network-address rate-limit records help prevent automated inflation. Clearing site storage removes the local identifier but does not remove its existing server hash.
Deleting data and contacting us
You can remove guest profiles through the game's Delete profile action. Other local settings, editor data or scoreboard entries may remain. To remove all locally stored game data, clear the Activity/site storage using your browser or Discord client controls where available. Clearing local data may permanently erase your progress.
Optional support links open Ko-fi outside the game. Pix support displays a public recipient key and QR code; transfers happen in the supporter’s banking app and expose normal bank-provided payment details to the developer. Ko-fi and its payment providers handle checkout under their own privacy policies. Contributions are received by the developer, who may see supporter details and messages supplied by those services. The game does not collect payment-card details or link contributions to game accounts, progress or gameplay benefits.
For privacy questions, help removing data, or requests about information you have sent directly to the developer, email [email protected]. We use correspondence to respond to your request and retain it as needed to handle that request and applicable obligations. You can request deletion of that correspondence. Do not send passwords or recovery codes. Requests about provider-held data should also be directed to the relevant provider.
Optional Discord account linking
If you choose Link Discord, Discord asks permission for basic identification (identify). We verify your Discord ID and store it with your existing game account and the link date, so you can sign in with Discord. We do not request email, messages or server lists, and do not store Discord passwords, access/refresh tokens or avatars. Discord display names are stored only for the separate optional public Daily sharing described below. Short-lived authorization records store hashed random verification values, the action, request origin, callback address, expiry and, for linking, the account/session references. Expired authorization records are removed on later authorization requests. Unlinking removes the identity association and ends other Discord sign-in sessions; your game account and password access remain. Deleting your game account removes the association. You can also revoke the app authorization in Discord settings. Ordinary guest play does not request this identity authorization. The separate optional Daily-sharing feature can request Discord identity authorization without creating or linking a game account.
Synced account preferences
For registered players, we store the selected theme and Custom piece/beam choices with a revision and update timestamp, so these choices can follow the account across devices. Guest appearance choices stay in the browser. We also store portable account preferences such as language, color scheme, beam behavior, controls, portal display and sound/music choices, with a revision and update timestamp. Account-scoped cached preferences and pending changes are kept locally to support reconnection. Board size, orientation, tip dismissals and sharing permissions stay local. Appearance records are deleted with the game account.
Double Exposure completions and optional sharing
Registered accounts save a private challenge identifier, number and completion timestamp so a website clear can be offered for sharing later in the Discord Activity. Full setups remain in the browser; layouts sent for clear validation are not stored in this completion table. Guests retain their completion in their browser only. Double Exposure sharing has a separate opt-in setting, or you can share a single clear from its congratulations screen. We post only your Discord display name and challenge number through the same community webhook, with no layouts or solution details. Discord ID, server ID, challenge ID and message ID are retained to prevent reposts across devices. Uncertain deliveries are not automatically retried. Turning off automatic sharing stops future automatic posts; existing posts and their independent deduplication records remain. Private account completion records are deleted with the account; contact us to remove independent Discord posts or sharing records.
Optional public Daily results in our community server
When enabled in Settings, this feature requests Discord identity authorization and verifies your active Activity instance belongs to our community server. It works independently of game accounts, including for guests. Your Discord display name, Daily date/difficulty, completion time, hints and misfires are posted publicly in #daily-results. We retain your Discord ID, server ID, result details and message ID to update one card per player per day and prevent duplicates. These records are cleaned up opportunistically after 60 days of inactivity when later results are shared. OAuth tokens are not stored; a signed sharing authorization stays in browser memory for up to six hours. Turning sharing off stops future posts; existing Discord messages remain until deleted by channel moderators or the webhook operator. Deleting a game account does not delete these independent Discord messages or sharing records. Contact the privacy email above for help removing them.
Política de privacidade — site e Atividade do Discord
Atualizada em 23 de outubro de 2026. Desenvolvedor, responsável pelo jogo e controlador dos dados: Rafael Assato Ando. Contato para privacidade: [email protected].
Esta política se aplica ao site de Prova de Luz, à Atividade do Discord e às suas prévias. Você pode jogar como visitante ou, quando as contas online estiverem disponíveis, entrar em uma conta de Prova de Luz compartilhada com o site. Jogar como visitante não cria uma conta nem envia seus resultados ao banco de dados, exceto quando você ativa explicitamente o compartilhamento público opcional de resultados diários ou de Dupla Exposição descrito abaixo. Entrar com a senha do jogo não vincula automaticamente sua identidade do Discord. Você pode optar por vinculá-la separadamente.
O que fica no seu dispositivo
- Nomes dos perfis de visitante, progresso, rating, conquistas, histórico e estado salvo dos desafios, placares do Sprint, configurações e dados do editor são armazenados localmente quando o aplicativo permite.
- Esses dados permitem salvar e retomar o jogo. Eles ficam separados dos dados do site, não são sincronizados entre dispositivos e não entram nos placares online.
- Os dados locais permanecem até que você ou o aplicativo os remova. Se não for possível salvar de forma persistente, o progresso dura apenas durante a sessão atual. Fechar a Atividade pode causar a perda de progresso interrompido ou ainda não salvo.
Contas online opcionais
- As contas online armazenam nome de usuário, hashes da senha e do código de recuperação, sessões, progresso, rating, histórico, conquistas, referências de desafios favoritos (incluindo registros de remoção) e resultados do Sprint no Cloudflare D1. Senhas e códigos são enviados por HTTPS para autenticação; os valores originais não ficam no banco de dados.
- O progresso da conta é compartilhado com o site. Os placares online do Sprint exibem o nome da conta e os resultados. Dados de visitante não são incorporados à conta; configurações do dispositivo, dados do editor e histórico local de Treinar permanecem locais.
- Um cookie de sessão seguro, HttpOnly e particionado mantém o acesso à conta dentro do Discord. Lembrar de mim controla sua persistência. Sair encerra a sessão atual; alterações de credenciais revogam sessões anteriores. Registros de limite de tentativas ajudam a prevenir abuso.
- Os dados da conta permanecem até sua exclusão ou um reset de testes informado. Excluir conta exige confirmação e senha e remove seus registros relacionados no servidor. Dados locais e registros dos provedores podem permanecer; entre em contato se precisar de ajuda. Nunca envie senhas ou códigos de recuperação por e-mail.
Verificação de cadastro
O Cloudflare Turnstile verifica novos cadastros para reduzir abusos automatizados. O componente pode processar dados de conexão e sinais do navegador conforme a política de privacidade da Cloudflare. O servidor valida um token temporário; o jogo não armazena esses tokens no D1. A verificação não é carregada durante partidas de visitantes.
Discord, hospedagem e dados de conexão
- O SDK do Discord usa informações de abertura e da sessão para conectar o jogo ao Discord. Jogar como visitante não solicita autorização para identificar sua conta do Discord. O vínculo e acesso opcionais solicitam identificação básica; apenas um ID vinculado explicitamente é mantido. O jogo nunca lê mensagens.
- Discord e Cloudflare entregam a Atividade e os arquivos do jogo. Eles podem processar dados de rede, como endereços IP, caminhos de requisições e horários, para operar e proteger seus serviços, conforme suas próprias políticas e práticas de retenção.
- O servidor de desenvolvimento não mantém registros de requisições. O jogo não contém publicidade nem análise de partidas e não envia automaticamente dados de partidas de visitante.
- Compartilhar um desafio copia uma seed ou um link para você enviar. Exportações de perfis e do editor geram arquivos locais; importações são processadas no dispositivo. Se você enviar esses arquivos ou links a alguém, essa pessoa poderá ver seu conteúdo.
Políticas dos serviços: Discord e Cloudflare. Convites para testar o aplicativo são gerenciados pelo Discord.
Estimativa de navegadores visitantes
Ao entrar como visitante, um identificador aleatório e uma confirmação de contagem ficam no navegador. O servidor mantém apenas o hash do identificador para evitar contar o mesmo navegador repetidamente. Não há vínculo com conta, identidade do Discord ou histórico de partidas. Os hashes são mantidos para uma estimativa acumulada desde a introdução do recurso, não uma contagem de pessoas únicas ou ativas. Outros navegadores/dispositivos ou a limpeza dos dados podem contar novamente; criar uma conta não remove uma visita anterior. Registros temporários de limite de requisições com hash do endereço de rede ajudam a conter aumentos automatizados. Limpar o armazenamento remove o identificador local, mas não o hash já registrado no servidor.
Sem conexão, o jogo pode manter eventos de desafios e resultados de Sprint de jogadores com conta na memória para sincronizar quando a conexão voltar. Esses resultados pendentes podem ser perdidos ao fechar ou recarregar a sessão.
Excluir dados e entrar em contato
Você pode remover perfis de visitante pelo botão Excluir perfil do jogo. Outras configurações, dados do editor ou entradas do placar podem permanecer. Para remover todos os dados locais do jogo, limpe o armazenamento da Atividade ou do site pelos controles do navegador ou do Discord, quando disponíveis. Isso pode apagar seu progresso permanentemente.
Os links de apoio opcional abrem o Ko-fi fora do jogo. O apoio via Pix mostra uma chave pública do recebedor e um QR code; as transferências são feitas no aplicativo bancário do apoiador e mostram ao desenvolvedor os dados normalmente fornecidos pelo banco. O Ko-fi e seus serviços de pagamento processam as contribuições conforme suas próprias políticas de privacidade. O desenvolvedor recebe as contribuições e pode ver os dados e as mensagens dos apoiadores fornecidos por esses serviços. O jogo não coleta dados de cartão nem vincula contribuições a contas, progresso ou vantagens no jogo.
Para dúvidas sobre privacidade, ajuda para remover dados ou solicitações sobre informações enviadas diretamente ao desenvolvedor, escreva para [email protected]. Usamos a correspondência para responder à sua solicitação e a mantemos pelo tempo necessário para atendê-la e cumprir obrigações aplicáveis. Você pode solicitar a exclusão dessa correspondência. Não envie senhas nem códigos de recuperação. Solicitações sobre dados mantidos pelos serviços também devem ser dirigidas ao serviço responsável.
Vínculo opcional com o Discord
Ao escolher Vincular Discord, o Discord solicita permissão para identificação básica (identify). Verificamos seu ID do Discord e o armazenamos com sua conta existente do jogo e a data do vínculo, para permitir o acesso pelo Discord. Não solicitamos e-mail, mensagens nem lista de servidores, e não armazenamos senhas do Discord, tokens de acesso ou renovação, avatares nem nomes do Discord. Registros temporários de autorização guardam valores aleatórios de verificação em forma de hash, ação, origem, endereço de retorno, prazo e, para vínculos, referências da conta e sessão. Registros expirados são removidos nas próximas solicitações de autorização. Desvincular remove a associação e encerra outras sessões iniciadas pelo Discord; sua conta do jogo e o acesso por senha permanecem. Excluir a conta do jogo remove o vínculo. Você também pode revogar a autorização do aplicativo nas configurações do Discord. Jogar normalmente como visitante não solicita essa autorização de identidade; o compartilhamento opcional de resultados diários pode solicitá-la separadamente.
Preferências da conta sincronizadas
Para jogadores registrados, armazenamos o tema selecionado e as escolhas de peças/feixe do modo Personalizado, com revisão e data de atualização, para que acompanhem a conta entre dispositivos. Escolhas de visitantes ficam no navegador. Também armazenamos preferências portáteis da conta, como idioma, esquema de cores, comportamento do feixe, controles, exibição dos portais e escolhas de som/música, com revisão e data de atualização. Preferências em cache e alterações pendentes são mantidas localmente por conta para permitir reconexão. Tamanho do tabuleiro, orientação, dicas dispensadas e permissões de compartilhamento permanecem locais. Esses registros são excluídos com a conta do jogo.
Conclusões de Dupla Exposição e compartilhamento opcional
Contas registradas salvam um registro privado com identificador, número do desafio e data da conclusão, para oferecer o compartilhamento de uma conclusão feita no site ao entrar depois na Atividade do Discord. Montagens completas continuam no navegador; montagens enviadas para validar a conclusão não são armazenadas nesta tabela. Visitantes mantêm a conclusão apenas no navegador. Dupla Exposição tem uma opção separada de compartilhamento automático, ou você pode compartilhar uma única conclusão na tela de parabéns. Publicamos apenas seu nome do Discord e o número do desafio pelo mesmo webhook da comunidade, sem montagens nem detalhes da solução. ID do Discord, servidor, desafio e mensagem são mantidos para evitar duplicatas entre dispositivos. Envios incertos não são repetidos automaticamente. Desativar o compartilhamento automático impede futuras publicações automáticas; publicações existentes e seus registros independentes de deduplicação permanecem. Registros privados de conclusão são excluídos com a conta; entre em contato para remover publicações ou registros independentes do Discord.
Resultados diários públicos opcionais no servidor da comunidade
Quando ativado nas Configurações, este recurso solicita autorização de identidade do Discord e verifica que a sessão ativa da Atividade pertence ao nosso servidor da comunidade. Funciona independentemente das contas do jogo, inclusive para visitantes. Seu nome de exibição do Discord, data/dificuldade do Diário, tempo, dicas e disparos falhos são publicados em #daily-results. Mantemos seu ID do Discord, ID do servidor, resultados e ID da mensagem para atualizar um cartão por jogador por dia e evitar duplicatas. Esses registros são removidos de forma oportunista após 60 dias de inatividade, quando novos resultados são compartilhados. Tokens OAuth não são armazenados; uma autorização assinada fica na memória do navegador por até seis horas. Desativar impede novas publicações; mensagens existentes permanecem até serem removidas pelos moderadores ou responsável pelo webhook. Excluir a conta do jogo não remove essas mensagens ou registros independentes do Discord. Para solicitar remoção, use o e-mail de privacidade acima.