You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Controle de Autenticação Estrito (Full Gating & Auth Dialog): Implementado o bloqueio completo de qualquer conteúdo de estudo (problemas, soluções comentadas, conceitos e guias de carreira) para utilizadores não autenticados. O acesso é interceptado reativamente através do componente RequireAuth que ativa o AuthDialog global e redireciona automaticamente o utilizador para a página pretendida após o sucesso do login.
Exclusão de Conta com Limpeza Total (Wipe): Criada uma caixa de diálogo de confirmação para a exclusão de conta no perfil do utilizador. A confirmação remove definitivamente todos os registros e históricos de progresso do banco de dados (Postgres) e limpa completamente o cache local do cliente através de localStorage.clear().
Desafio Diário Aprimorado (Checklist e Validação): O sistema de Desafio Diário agora exige a validação estrita de três tarefas antes de considerar o desafio completo: 1) o problema deve ser acessível ao utilizador, 2) o enunciado deve ser visitado, 3) todas as soluções disponíveis do problema devem ser lidas, e 4) o utilizador deve passar pelo menos 3 minutos (180 segundos) de tempo ativo na página.
🛠️ Melhorias Técnicas & UI
Cronómetro Digital LCD/LED (Glowing Clock): Adicionado um widget de cronómetro baseado no modelo digital de sete segmentos (HH:MM:SS:CC) com renderização em tempo real atualizada a cada 50ms para exibição fluida de centésimos de segundo. O contador usa uma caixa preta de alto contraste com fontes personalizadas e sombras de texto luminescentes (glow) brancas e verdes.
Estrutura Modular (Separação de Conceitos): O rastreador do desafio foi dividido em três partes organizadas: os utilitários de armazenamento e formatação (daily-challenge-utils.ts), o hook de controle de efeitos e tempo ativo (use-daily-challenge.ts) e o componente de interface pura (daily-challenge-tracker.tsx).
Alinhamento com o Design System Estrito: Removidas todas as bordas arredondadas da interface do banner (rounded-none absoluto) e limpos os efeitos de pulsação ociosa (animate-pulse / animate-ping) para garantir sobriedade visual e consistência técnica.
Layout Inteligente Flutuante (Sticky): O banner agora acompanha o scroll da página de forma fixa (sticky top-16) mantendo exatamente a mesma largura útil do conteúdo principal (max-w-7xl px-6) com efeito translúcido no fundo e zero impacto na tela quando inativo.