Siga seus rivais: amigos e um ranking de amigos
Siga os jogadores que você gosta de vencer, veja-os classificados em uma aba de ranking só deles e gerencie todo mundo em uma nova página de Amigos com busca por apelido.

Em palavras simples
opolyx é mais divertido com gente que você reconhece. Agora você pode seguir qualquer jogador — toque em Seguir no perfil dele, ou encontre-o por apelido na nova página de Amigos — e ele aparece em uma aba do ranking que reúne só você e as pessoas que você segue.
Seguir é de mão única, como na maioria dos apps sociais: você não precisa que sigam de volta e não há nada para aceitar. Um ranking é público de qualquer forma, então seguir alguém não revela nada que a pessoa já não tivesse deixado visível.
- Siga / deixe de seguir em qualquer página de perfil com um único botão.
- Uma nova página de Amigos com abas Seguindo e Seguidores e uma busca por apelido para encontrar jogadores.
- Uma aba de Amigos no ranking classifica você e todos que você segue por XP.
- As contagens de seguidores e de quem você segue agora aparecem como chips em cada perfil.
Para os mais técnicos
A migração 0033 adiciona uma tabela follows — uma aresta dirigida (follower, followee) com uma guarda de duplicidade por chave primária, uma checagem de não-autosseguir e exclusão em cascata. As leituras usam RLS de linha própria (cada lado lê suas próprias arestas); as escritas passam por dois RPC security-definer baseados em auth.uid() e modelados em create_game.
-- follow_user / unfollow_user: idempotent, auth.uid()-scoped, security definer
-- 0031 grant lesson applied: default privileges grant EXECUTE to anon —
-- revoke from public, anon FIRST, then grant execute to authenticated only.Contar os seguidores de um usuário qualquer é bloqueado por esse RLS de linha própria, então a migração 0034 adiciona get_follow_counts(p_user) — uma função security-definer que retorna seguidores/seguindo. Como as contagens não são sensíveis e os perfis são de leitura pública (um perfil é exibido para visitantes anônimos), ela é concedida a anon + authenticated — o inverso dos RPC de escrita de 0033.
A consulta do ranking de Amigos é simplesmente o id do espectador unido a todos que ele segue, classificados por XP global. Ambas as migrações foram aplicadas em produção via API de gerenciamento do Supabase e verificadas (concessões: authenticated sim / anon não para escritas, anon sim para contagens) antes de a mudança web ir ao ar.
