Bug de duplicidade FTP, dois modais quebrados e a documentação que veio depois
Bug de re-envio FTP, área branca em modal mobile e header sobrepondo modal — três commits e um doc de padrões no mesmo dia.
O dia começou com um problema que estava dormindo silencioso no sistema de FTP do kmaroteApp: arquivos já enviados podiam ser reenfileirados e enviados de novo.
Manhã: bug de duplicidade no FTP
O sistema de envio FTP tem três pontos de checagem para evitar duplicatas — três queries separadas que verificam se um arquivo já está na fila. O problema: nenhuma das três incluía o status enviado na cláusula IN. A query checava na_fila e processando, mas não o estado final. Resultado: arquivo enviado com sucesso voltava para a fila na próxima rodada de sincronização.
A correção foi adicionar enviado ao IN (na_fila, processando) em dois arquivos:
funcs/ftp.phpadmin/scripts/sincronizar_postagens_ftp.php
Commit 22d3fdc7. Cirúrgico, sem efeito colateral.
Tarde e noite: dois problemas de modal completamente distintos
A parte mais longa do dia foi resolvendo dois bugs de modal na tela de agendamento do kmaroteApp. Os dois problemas eram distintos em sintoma e em causa raiz, mas tinham a mesma origem estrutural: uma combinação de classes Bootstrap 5 usada incorretamente.
Problema 1: área branca grande abaixo do input de data
No modal-agendamento, o modal-body estava sendo esticado para 100vh em mobile mesmo com poucos campos — gerando um vazio enorme abaixo do último input.
O Claude Code e o Codex chegaram ao mesmo diagnóstico por caminhos separados: a combinação de modal-fullscreen-sm-down mais modal-dialog-scrollable era o problema. O modal-dialog-scrollable já garante scroll interno quando necessário. O modal-fullscreen-sm-down era redundante nesse contexto e destruía o comportamento de altura do modal-body.
Solução: remover modal-fullscreen-sm-down do modal-agendamento e adicionar modal-lg para alinhar com o padrão do modal-gerar-prompt no mesmo arquivo.
Commit aea607c9.
Problema 2: header sobrepondo o modal em telas menores
O modal-gerar-prompt ficava atrás do header do site em determinadas resoluções. O diagnóstico foi levantado em paralelo nas sessões de Claude Code e de Codex, acoplado à mesma análise de padrões dos modais.
Documentação: padrão oficial de modais Bootstrap 5
Com dois bugs distintos causados pelo mesmo anti-padrão, fazia sentido documentar antes que o problema aparecesse nos outros 90+ modais do sistema.
A análise varreu o admin do kmaroteApp e encontrou aproximadamente 93 modais. Cerca de 84% deles seguem modal-dialog-scrollable sem modal-fullscreen-sm-down — o padrão correto. O anti-padrão (os dois juntos em formulários curtos) aparecia em poucos modais, mas causava regressão visível em mobile.
O resultado foi padroes_modais.md com:
- Três categorias de modal: confirmação simples, formulário médio, edição pesada
- Tabela de classes corretas por categoria
- Exemplos reais do sistema para cada categoria
- O anti-padrão documentado explicitamente, com o motivo pelo qual quebra
Commit fe0c3053.
Nessa etapa o Codex também foi usado para verificar se kmarote.css estava sobrescrevendo classes nativas do Bootstrap. A regra é usar Bootstrap 5 puro sem customizações nas classes nativas. A verificação confirmou que a regra estava sendo respeitada.
Quando o Claude Code está chutando
Vale registrar porque é relevante para o processo: ao longo das sessões de Claude Code no kmaroteApp, precisei cortar o agente duas vezes no mesmo dia.
Em dois momentos distintos, o Claude Code apresentou uma solução afirmando que não falharia — e a solução nunca funcionou desde o início. Na segunda vez que questionei, o comportamento pareceu ser gerar uma nova resposta sem reler a documentação já configurada. Em vez de verificar o que existia, o agente estava variando a tentativa.
Isso levou a uma sessão dedicada a mapear o padrão de modais do sistema antes de qualquer alteração — uma forma de forçar o agente a trabalhar com evidência em vez de suposição. O padrão de usar sub-agentes para pesquisa antes da execução tem funcionado melhor do que deixar o agente principal tomar decisões sem base empírica.
Codex: revisão do Grok e duplicidades no banco
Uma sessão mais longa do Codex — que começou no dia 31 e continuou hoje — revisou o Grok V1, verificando se o prompt gerado nos testes seguia as premissas do plano original. O Codex identificou pontos de divergência e montou um plano de correção. Uma das correções envolvia excluir um registro duplicado do banco sem hardcodar valores. Uma query também foi gerada para buscar outras duplicidades na base.
Pendências
- Correções do Grok V1 identificadas pelo Codex ainda não implementadas
- Larissa indisponível durante todo o dia (SSH com erro)
Estatísticas do dia:
Atividade no PC:
- Tempo ativo: 3h38min
- AFK: ~37h
- Janela total monitorada: ~40h40min
Por categoria (do que ficou ativo):
- Uncategorized: 1h9min
- Coding: 1h8min
- Larissa Project: 1h4min
- Communication: 15min
- Browsing: 1min
Top apps: Chrome (1h13min) · Codex (1h4min) · Antigravity IDE (1h3min) · WhatsApp (14min)
Top sites navegados: kmaroteApp dev (2 domínios internos, ~11min) · docs.google.com (4min)
Trabalho com IA:
- Conversas claude.ai: 0 mensagens novas
- Sessões Claude Code: 6 (Windows) · Sessões Codex: 2
Código produzido:
- Commits: 3 (22d3fdc7, aea607c9, fe0c3053) · Repositório: kmaroteApp