Corrigida a verificação de permissões do dono do país e de administradores na página da liga e na listagem de Meus Times, normalizando os tipos de dados para que os botões de edição, movimentação e upload de uniformes/escudos sejam exibidos corretamente.
Adicionada a opção de escolher entre competições Internacionais e Nacionais durante o cadastro. Competições nacionais têm país e sede vinculados automaticamente e desativam a importação de arquivos .ymt temporários, utilizando exclusivamente os clubes registrados no país.
Garantido que, ao ser registrado o falecimento de um atleta (ou técnico), todos os contratos ativos em clubes e convocações em seleções sejam devidamente rescindidos e removidos do banco de dados.
Adicionada uma nova seção em cards no perfil do jogador exibindo suas últimas partidas disputadas, com placar, escudos, resultado da equipe, status de titularidade e destaques individuais para gols marcados, cartões amarelos e cartões vermelhos com link para a súmula oficial.
Ajustada a rotina automática (cron_simular_jogos.php) para buscar e simular todas as partidas com status pendente (status = 0) agendadas até as próximas 24 horas, incluindo jogos atrasados com data no passado que ainda não haviam sido simulados.
Garantido que na exportação de times e jogadores (ex: Footscore) a posição do jogador utilize sua posição base ou primeira posição de ofício, sem registrar 'S' de suplente.
Atualizada a biblioteca de envio de e-mails para a versão 6.9.3, garantindo compatibilidade total com o PHP 8.2+ e prevenindo avisos de depreciação e incompatibilidades.
Adicionado suporte completo ao status de Falecido para técnicos na tabela de Meus Técnicos e no perfil individual (coachstatus.php), com data de falecimento, badge mortuário com cruz (†), filtro em escala de cinza na foto e demissão automática do clube atual.
Corrigida a duplicação do placeholder de usuário logado e normalizado o tratamento de filtros nulos e vazios nos métodos de busca avançada de jogadores e técnicos, eliminando a exceção SQLSTATE[HY093].
Adicionada proteção contra valores nulos em strip_tags, strpos e strtotime nos métodos da classe Jogador e na página teamstatus.php, eliminando avisos de depreciação do PHP 8.1+.
Ajustada a interpolação de limites e tipagem de parâmetros no método lerPropostasPendentes da classe Tecnico, eliminando erros de sintaxe de compilação.
Jogadores sob empréstimo (clubeVinculado ativo) agora exibem badge 'EMPRESTADO', menção ao clube de origem e botão de proposta bloqueado para terceiros, mantendo-se acessível para o clube que detém o empréstimo negociar compra definitiva ou extensão.
Ajustadas as consultas de busca avançada de jogadores e técnicos para filtrar contratos de clube (tipoContrato = 0) na junção principal, garantindo que atletas convocados para seleções nacionais mas sem clube apareçam normalmente como livres no mercado.
Adicionada opção para marcar jogadores como Falecidos na tabela de Meus Jogadores, com badge mortuário contendo cruz pontuda (†), data de falecimento, sinal de luto, aplicação de filtro preto e branco (grayscale) e bloqueio total com efeito grayed out na edição de atributos de jogadores falecidos.
Adicionada a opção de ativar ou desativar o envio de partidas para o CONFUSA Live individualmente por jogo na tabela de competições, respeitando o padrão configurado na competição e permitindo ajustes na edição inline ou ao criar novas partidas.
Ajustada a conversão booleana da variável JS emTestes na página de transferências e busca avançada, eliminando o erro de sintaxe que impedia o carregamento dos sliders, checkboxes e estilos de busca em produção.
Removida a chamada automática a demitir() no método de edição geral de jogadores ao salvar atributos ou posições, prevenindo que atletas sejam removidos indevidamente de seus clubes.
Adicionado fallback seguro para o parâmetro GET 'type' em mercado/transferencias.php, eliminando o aviso de Undefined array key ao acessar a listagem.
Removida a declaração duplicada da função hexToRgb() no fluxo de submissão do formulário em criar_time.php, eliminando o erro fatal Cannot redeclare hexToRgb().
Adicionada a pasta utils/PHPMailer e PHPMailer no .gitignore para evitar o versionamento desnecessário da biblioteca de terceiros.
Adicionada checagem is_array nos retornos de consulta dos métodos idByEmail(), ID(), readName(), password() e obterApiKey() na classe Usuario, prevenindo o aviso de array offset on value of type bool quando o usuário ou e-mail não é encontrado.
Declaradas explicitamente as propriedades $idDef e $_entity_parser nas classes do HTMLPurifier, eliminando os avisos de depreciação de criação de propriedades dinâmicas.
Adicionada limpeza automática da tabela jogadorpendente e inclusão de versões adicionais de compatibilidade no SQLite temporário antes da execução da engine Java, impedindo que o motor dispare janelas de diálogo gráficas (JOptionPane) em ambiente headless de servidor.
Removido bind de parâmetro inexistente em getOptions() e adicionada tipagem segura com validação de nulos em retrieveTransactions(), create() e apagar() na classe Transaction, prevenindo erros PDO e avisos de depreciação do strip_tags/htmlspecialchars no PHP 8.1+.
A listagem e preenchimento de vagas nas competições agora restringe estritamente a escolha a clubes de países com federação oficial membro da CONFUSA (FEASCO, FEMIFUS, COMPACTA). Países Não-Confederados (NC) ou do mundo real não podem ter clubes inscritos, enquanto atletas estrangeiros continuam permitidos nos elencos.
Usuários em período de testes agora possuem bloqueios de segurança completos contra a criação de países, criação/importação de competições e opções, importação e manipulação de jogos de clubes (jogos_clube) e criação/geração de novos jogadores via Hexagen ou Categorias de Base.
Criada uma tela de testes (/admin/teste_discord.php) e card no menu do administrador que permite preencher e disparar notificações fakes de transferências para verificar o funcionamento do webhook do Discord em produção.
Os nomes dos clubes de origem e destino na tabela de Propostas de Técnicos agora são clicáveis e direcionam para o perfil do respectivo clube, padronizando a navegação com a tela de propostas de jogadores.
Adicionado tipo de retorno mixed e atributo #[\ReturnTypeWillChange] aos métodos jsonSerialize() das classes Driver e Car, eliminando avisos de depreciação do PHP 8.1+.
Adicionada tipagem segura e conversão para string em variáveis passadas ao htmlspecialchars no cabeçalho de leaguestatus.php, prevenindo avisos de depreciação com valores nulos.
Adicionado seletor no Painel do Administrador (/admin/index.php) que permite personificar instantaneamente qualquer usuário cadastrado com um clique, além de botões e links diretos no menu para encerrar a personificação e retornar à conta de administrador sem necessidade de refazer login.
Unificado e ativado o processamento automático de imagens para formato .webp em todo o sistema (escudos, uniformes, mascotes, logos de ligas, competições, bandeiras, estádios, fotos de jogadores/técnicos, capa da revista e Octamotor), garantindo redimensionamento proporcional e preservação de transparência/canal alfa, eliminando dependências legadas do pngquant.
Aprimorado o layout mobile dos cards nas telas de Meus Países, Meus Climas, Meus Estádios, Meus Parâmetros, Meus Técnicos, Meus Times, Meus Jogadores e Ligas: contenção e quebra segura de nomes longos para evitar sobreposição, alinhamento compacto dos bloquinhos de cores e bandeiras à direita, e agrupamento horizontal dos botões de opções.
Corrigida a consulta de últimas partidas e próximo confronto na página do clube, isolando as tabelas de competições do simulador interno (competicao_lista) das tabelas legadas (liga e campeonatos_clube) para exibir o nome correto do campeonato.
Quando todos os confrontos de uma fase do mata-mata forem simulados e concluídos, o sistema automaticamente classifica os vencedores (e os times com BYE), gerando as partidas da fase seguinte (ex: 32-avos ➔ 16-avos ➔ Oitavas ➔ Quartas ➔ Semifinal ➔ Final).
Adicionada validação de existência e verificação estrita de arrays para evitar avisos PHP de array offset on bool e deprecations do password_verify com hash nulo em login_info.php e competitionstatus.php.
A tabela de classificação em Estatísticas agora exibe exclusivamente os clubes que foram escalados e confirmados na competição (Lista de Times/Slots), removendo clubes substituídos ou excluídos que permaneciam no banco SQLite anterior.
Adicionada a classe .sr-only com display: none para ocultar o texto de acessibilidade (current) no item de página ativa da paginação na lista de jogos e demais páginas com paginação.
Atualizados os filtros da Busca Avançada no Mercado (transferencias.php), adicionando Select2 com barra de pesquisa para seleção rápida de Nacionalidade, Liga, Mentalidade e Estilo.
Na tela de gerenciamento de vagas (listatimes.php), times que já estão escalados em alguma vaga deixam de aparecer nas opções das outras vagas, evitando seleções duplicadas acidentais.
Substituídas as mensagens estáticas de erro do topo da página em listatimes.php por toasts flutuantes modernos e fixos na viewport, permitindo que o usuário visualize avisos e validações de times sem precisar rolar até o início da tela.
Adicionada ferramenta na tela de gerenciamento de vagas (listatimes.php) que permite definir o mesmo país para todas as vagas da competição de uma só vez, agilizando a configuração de ligas e torneios.
Corrigido o aninhamento indevido de tags HTML na página do time (teamstatus.php) que ocultava o campinho tático de posicionamento, e restaurada a distribuição flexbox do elenco para exibição das tabelas de Titulares, Reservas e Suplentes perfeitamente lado a lado no desktop.
Otimizada a visualização mobile das telas de gerenciamento (Meus Times, Meus Países, Meus Estádios, Meus Técnicos, Meus Climas, Meus Parâmetros e Jogadores no Exterior), transformando as tabelas densas em cards verticais responsivos e com rótulos destacados para cada atributo.
Atualizada a imagem de capa do card 'Central de Desfalques' no Dashboard do Usuário com a arte temática do Departamento Médico (deptomedico.jpg).
Ajustada a ordem de execução no Dashboard do Usuário para garantir a inicialização automática da tabela competicao_suspensos antes das consultas de desfalques e jogos ativos, prevenindo erros de preparação SQL em bancos sem a tabela previamente criada.
Ocultado o botão de escalação na Lista de Jogos (listajogos.php) para partidas com status 'Simulado' ou 'Encerrado' (status = 1), e adicionada proteção no backend (escalacao_jogo.php) para impedir a alteração tática ou substituição de atletas em jogos já processados pelo simulador.
Implementada proteção contra falhas de decodificação de sessão no session_start() e adicionado tratamento seguro contra passagem de valores nulos em strip_tags() na alteração de elencos (time.php).
Criado um card visual elegante para quando não houver competições cadastradas ou quando a pesquisa não retornar resultados, exibindo ícones temáticos, mensagens orientativas, botão para limpar busca e atalho para criação da primeira competição.
Implementada a integração que envia as súmulas (.hyl) e metadados das partidas automaticamente para o CONFUSA Live quando a opção 'Subir jogos no Live?' estiver habilitada na competição (tanto na simulação manual quanto via cron), com suporte a proxy intermediário (Cloudflare Workers) para contornar restrições de porta de saída na hospedagem.
Aprimorada a identificação de status da competição em competitionstatus.php, detectando automaticamente quando o torneio foi concluído (Final disputada ou todos os jogos realizados) para exibir a badge 'Finalizada', em vez de 'Pronta para simular'.
Implementada verificação dinâmica que preserva todo o histórico no banco de dados e oculta automaticamente suspensões e pendurados de competições concluídas (Final realizada) ou de clubes já eliminados da disputa, mantendo a tela focada apenas nas pendências reais dos próximos jogos.
Otimizados os tamanhos máximos de inputs editáveis (times, datas, horários e estádios) e expandida a largura do card da Lista de Jogos para 1420px, garantindo que os botões de Salvar e Cancelar nunca quebrem ou caiam para fora da tabela durante a edição.
Atualizada a coluna de Árbitro na tabela de jogos para exibir sempre 'Aleatório', refletindo o comportamento real do motor de simulação que sorteia a arbitragem dinamicamente a cada partida.
Implementada validação no frontend e backend (simulação manual e cron) que bloqueia a tentativa de simular partidas sem estádio definido ou inválido (N/A), evitando exceções no motor de simulação Java.
Criada a página Central de Desfalques (desfalques.php) e integrado um card com contador em tempo real no Dashboard do Usuário, permitindo acompanhar em um único local todos os atletas no Departamento Médico (com previsão de retorno e contagem regressiva de dias) e suspensões/cartões por competição.
Padronizado o alinhamento das células de time e cartões com a classe .team-cell em vez de display:flex no <td>, eliminando falhas visuais de alturas desiguais nas tabelas de estatísticas da competição.
Ajustado o processamento de pós-jogo para extrair durações de lesões do arquivo .hyj e aprimorada a consulta em Estatísticas para integrar lesões registradas tanto na tabela global de jogadores quanto na tabela da competição.
Substituída a mensagem simples de texto na tela de súmula por um card moderno (Design 2.0) com glassmorphism, dados completos do confronto, horários previstos e botões de navegação.
Ajustada a exibição da Lista de Jogos para ocultar o placar de partidas simuladas antecipadamente até o horário real de término do jogo, mantendo a experiência de sigilo para todos os usuários.
Corrigido o manipulador de clique no botão de bola de futebol (Simular) na Lista de Jogos, conectando-o ao motor Hexacolor com modal de progresso e atualização imediata do placar e súmula da partida.
Substituída a biblioteca pesada legada por SimpleXLSX e SimpleXLSXGen nativos em lib/simplexlsx, eliminando dependências complexas do Composer e resolvendo integralmente erros de depreciação e advertências do PHP 8.x na importação e exportação de competições e elencos.
Aprimorado o algoritmo de deduplicação e exclusão de logs em admin/logs.php para comparar exclusivamente o tipo, a mensagem e o arquivo/linha do erro, ignorando variações de parâmetros no stack trace completo para somar corretamente todas as ocorrências idênticas (Nx).
Adicionado dropdown individual de Slot/Sorteio para cada equipe na Lista de Times (ex: A1, A2, B1, etc.) com confirmação de segurança. Ao definir o slot de um time, o sistema atualiza instantaneamente todos os jogos correspondentes na tabela gerada, bloqueia o dropdown para prevenir alterações indevidas e desativa o slot nas demais vagas.
Corrigidos avisos de depreciação ao passar valores nulos para strip_tags() e number_format(), declaradas propriedades de classe ausentes em TrioArbitragem e Time, e blindado o início de sessões contra saídas de cabeçalhos já emitidas.
Ao definir ou alterar um clube em uma vaga na Lista de Times (ex: Vaga #2 = A2), todos os jogos da tabela gerados com esse slot são automaticamente atualizados de uma só vez com o time selecionado e seu estádio, sem precisar editar jogo por jogo.
Adicionada verificação preventiva com headers_sent() no cabeçalho geral (header.php) antes de emitir instruções de Cache-Control e Pragma, evitando avisos e falhas de envio de cabeçalho.
Corrigida a detecção e montagem das tabelas de classificação por grupo em estatísticas, que anteriormente unificava todos os times em uma única tabela geral devido ao mapeamento restrito apenas a partidas já finalizadas.
Implementada a geração correta de confrontos com placeholders (A1, A2, B1, Slot 1...) ao escolher a opção de Sorteio Intermediário, permitindo definir a grade inicial e alocar os clubes posteriormente na Lista de Jogos.
Corrigido erro fatal (SQLSTATE 1364) ao gerar tabela de jogos e ao importar partidas, atribuindo corretamente o identificador do proprietário da competição (dono) e definindo valor padrão na tabela jogos_clube.
Corrigido bug em que partidas com status 'next' desatualizado na fonte apareciam entre os Próximos Jogos. A API agora valida a data/hora real de cada jogo e move automaticamente os que já passaram para Resultados Anteriores, corrigindo também o banco de dados.
Corrigido bug em que nomes de times contendo '&' podiam ser gravados no banco como '&', gerando entradas duplicadas e agrupamentos incorretos. O scraper agora aplica decodificação de entidades HTML em todos os textos extraídos da fonte.
Adicionado seletor de país/nacionalidade na tela de importação de árbitros (.tda), permitindo definir o país de destino manualmente ou manter a detecção automática pela sigla no arquivo.
Corrigida exceção fatal do PDO (SQLSTATE[HY093]) nos métodos adversariosMaisEnfrentados e maioresDerrotas em objetos/jogos.php e objetos/jogos_clube.php que tentavam vincular parâmetros em consultas globais sem placeholders, restaurando a exibição correta de todos os modais de estatísticas e recordes.
Corrigida a validação de propriedade de ligas (isFromUser) e consulta múltipla de clubes na exportação de banco de dados HYMT, eliminando o erro indevido de liga não pertencente ao usuário decorrente de comparações de tipo estritas e vinculação por referência no PDO.
Implementado o fluxo Post/Redirect/Get (PRG) no login, logout e em todas as telas de criação e inserção (árbitros, países, ligas, clubes, seleções, jogadores, estádios, climas, parâmetros e usuários), eliminando o aviso de reenvio de formulário ao voltar ou recarregar a página.
Comentadas todas as instruções de log e debug no console do navegador em arquivos de páginas e scripts do sistema para manter o ambiente de execução e inspeção limpo.
Adicionado suporte a limite de idade máxima configurável por liga (ex: Sub-20, Sub-18) na criação e edição inline em Minhas Ligas, com bloqueio automático no backend e frontend para escalação de titulares e reservas acima da idade (restringindo-os a suplentes) e sinalização com ícone de cadeado.
Corrigidas as consultas SQL dos métodos verificarTecnicos e verificarElencoMenor em time.php que não contabilizavam corretamente clubes sem registros associados, garantindo que o backend barre a exportação e notifique o usuário caso o clube não possua técnico cadastrado ou elenco suficiente.
Definidos valores padrão para os campos da tabela clube no método create de time.php, resolvendo a falha de inserção SQL, e padronizados os botões e formulário da tela de criação de seleções no Design 2.0.
Removida a constraint de sigla única da tabela de países no banco de dados, definidos valores padrão na inserção e aprimorada a validação de upload de bandeiras em criar_pais.php.
Corrigido caminho de inclusão das funções auxiliares e adicionada validação de existência de arquivos de imagens (escudos e uniformes) em get_ymt_info.php, prevenindo erros de resposta do servidor na exportação de times e seleções.
A tela de demografia e o formulário de inserção de fatias demográficas foram completamente reformulados: agora separam de forma clara a distribuição de Nomes Próprios e Sobrenomes em cards distintos, adicionando barras de composição empilhada proporcionais, legendas coloridas, indicadores de frequência relativa, ocorrência de nomes duplos, miscigenação e botões padronizados no Design 2.0.
Ajustadas as larguras percentuais das colunas, paddings e dimensões dos campos de edição inline na listagem de times (Meus Times), garantindo que todos os controles permaneçam 100% enquadrados na tela sem transbordar o card principal.
Adicionado bloqueio imediato de botões com indicador 'Enviando...' / 'Importando...' na tela de Envio de Fichas (enviar_fichas.php) para evitar disparos duplicados enquanto a requisição está em processamento.
Definido o valor padrão para o campo 'salario' na inserção de contratos no método convocar de tecnico.php, prevenindo o erro SQL 1364 de campo sem valor padrão.
Aumentada a largura máxima do contêiner principal para 1380px em transferencias_redesign.css e otimizadas as colunas mensais da tabela de Janelas de Transferência, garantindo que todas as 15 colunas caibam perfeitamente dentro do card.
Adicionado link no logotipo CONFUSA.top do cabeçalho superior (header.php) para permitir o retorno rápido à página inicial a partir de qualquer tela.
Adicionado link interativo nos cards em formato de figurinha (titulares) e nas tags do banco de reservas na Apresentação Placar do Time (team_presentation_magazine.php) para redirecionar diretamente ao perfil individual do jogador (/ligas/playerstatus.php).
Removida referência à coluna inexistente 'origem' nos métodos de consulta de últimas partidas e próximo jogo em jogos_clube.php, corrigindo o erro 1054 do MySQL na tela de Apresentação Placar do time.
Condicionada a alteração de parâmetros de sessão (ini_set, session_set_cookie_params e session_name) ao estado inativo da sessão em session.php, prevenindo warnings quando a sessão já se encontra ativa.
Protegido o acesso às variáveis de sessão ($_SESSION['impersonated']) e segmentação de rotas ($currentPage) em header.php contra notices de índices e offsets indefinidos no PHP 8.
Tratado o cálculo e formatação de médias (idade, jogadores e valor de mercado) em paisstatus.php com fallback de tipagem segura para evitar avisos de deprecation no number_format() em ligas sem jogadores cadastrados.
Aprimorado o agrupamento e interpretação de logs de erro na Central de Logs (admin/logs.php), tratando corretamente linhas multilinha de Stack Trace e identificando avisos de depreciação e erros com precisão.
Ajustado o tratamento de parâmetros nulos no método countAll de time.php, eliminando avisos de depreciação do strip_tags() no PHP 8.1+.
Corrigida a conversão implícita de float para int e a tipagem de dimensões em todas as rotinas de redimensionamento e upload de imagens (times, estádios, técnicos, competições, países, jogadores, destaques e octamotor), garantindo compatibilidade com o PHP 8.1+.
Adicionado fallback seguro com o operador null coalescing para a variável $_SERVER['REQUEST_URI'] nos formulários de autenticação e modais do cabeçalho, prevenindo avisos de índice indefinido.
Modernizado o tratamento de codificação de arquivos XML em rotas de importação, substituindo funções legadas por conversões seguras compatíveis com PHP 8.2+.
Adicionada a funcionalidade de editar o nome, escudo e uniformes (1 e 2) dos clubes diretamente pela tabela na tela de Status da Liga (leaguestatus).
Ajustada a identificação de ambiente local (suportando domínios como local.confusa.top, Virtual Hosts e Windows) para que a central de logs grave e consulte o arquivo local php_errors.log sem afetar o caminho centralizado de produção.
O robô de sincronização do PoltronaScore agora remove automaticamente do banco de dados local as partidas que foram canceladas ou apagadas da origem (CONFUSALive).
Unificado o armazenamento de todas as partidas na tabela jogos_clube com a flag discriminadora simulador_interno, integrando eventos detalhados e escalações pós-jogo. Adicionada a exibição da Próxima Partida na revista do clube e implementado o sigilo temporal: partidas simuladas com antecedência só têm seus placares e súmulas revelados após o término real do confronto no relógio (120min para tempo normal e 150min em caso de pênaltis).
O criador de competições agora permite definir a quantidade de grupos e o número de times por grupo, com alocação automática de times excedentes em uma fase preliminar (com opção de jogo único ou ida e volta). Em pontos corridos, agora é possível escolher entre 1, 2, 3 ou 4 turnos.
Adicionada opção de sorteio intermediário com geração de tabela por slots (placeholders), permitindo ao organizador encaixar ou alterar os times dos confrontos agendados diretamente na Lista de Jogos.
A aba Chave de Mata-Mata agora exibe o placar de pênaltis e o destaque do classificado quando uma partida for decidida nas penalidades.
Adicionada uma seção na página de apresentação (revista Placar) exibindo os últimos 3 jogos do clube, integrando partidas de ligas/amistosos (jogos_clube) e competições oficiais com placares, escudos, indicadores de vitória/empate/derrota e datas.
Removida a restrição de sigla única para clubes e seleções, permitindo agora a alteração e edição direta da sigla de 3 letras de cada clube no quadro Meus Times.
Estendida a verificação prévia de exportação para a exportação individual de times (.ymt) e jogadores (.jog). Para times, são checadas todas as regras de integridade (elenco mín/máx, 11 titulares, 1 goleiro, capitão, batedores de pênalti, limite de idade, técnico e clima/estádio). Para jogadores, valida-se o vínculo, limite de idade e posições válidas.
Adicionada a exibição do ícone com a numeração da camisa ao lado do nome do jogador na página individual do atleta.
Substituição da fonte Kanit pela Outfit em todos os títulos, cabeçalhos, cards e elementos do sistema para proporcionar maior legibilidade, modernidade e conforto visual.
Permitido que administradores visualizem e selecionem todas as ligas e todos os times cadastrados no sistema ao realizar importações de clubes e jogadores.
Alterada a lógica de pesquisa de homônimos de OR para AND. Agora o sistema exige que todas as partes do nome pesquisado estejam presentes no cadastro do banco para sugerir o match, eliminando sugestões irrelevantes.
Garantido que jogadores preexistentes no clube que não constam na nova importação do XML sejam removidos da titularidade, da reserva e da capitania/batedor, passando ao status de suplentes.
Se um novo técnico for atribuído a um clube durante a importação, o contrato do técnico anterior com o respectivo clube é rescindido automaticamente, tornando-o agente livre.
Resolvido erro de banco de dados no modo estrito (Strict Mode) ao inserir um novo técnico, definindo um valor padrão vazio para a coluna 'referencia' na query de criação.
Corrigido erro que causava falha 500 no MySQL Strict Mode por enviar o campo 'Sexo' do técnico vazio durante a importação. Agora o valor é capturado e enviado corretamente.
Adicionado gatilho de inicialização via jQuery para sincronizar automaticamente os campos ocultos do formulário com os valores preservados pelo navegador nos dropdowns de liga e time após retornos de página ou recarregamentos.
O sistema agora exibe um alerta de divergência crítica de vínculo apenas se o jogador/técnico sugerido estiver atualmente em um clube pertencente a um país diferente do país de destino da importação.
Agora é possível enviar mensagens e justificativas ao criar uma proposta, ao efetuar uma contraproposta ou ao recusar uma transferência de jogadores e técnicos, com histórico interativo em formato de chat.
Garantido que transações e propostas de transferências ainda não efetivadas ou pendentes não sejam contabilizadas nas finanças e balanço de caixa dos clubes.
Administradores agora podem alterar o status (Pendente, Em processo, Completo, Cancelado) das sugestões e bugs diretamente na tabela via AJAX.
O limite máximo permitido para envio de súmulas (.hyl) e arquivos de times (.ymt) foi ampliado para 10 MB, evitando erros de arquivo muito grande em partidas longas.
Corrigida a tipagem e conversão do campo Hemisfério para o banco de dados e aprimorado o retorno de mensagens de erro na edição inline de climas.
Removida a exibição do atributo de determinação nas tags dos jogadores na tela de Jogadores no Exterior.
Criada a nova tela detalhada do perfil do técnico (coachstatus.php) no padrão Visual 2.0, exibindo foto, idade, nacionalidade, nível, estilo tático, mentalidade, clube atual e todo o histórico de transferências e contratos.
Ajustado o limite de memória e otimizado o carregamento de imagens em criar_pais.php e alterar_pais.php, prevenindo estouro de memória (Allowed memory size exhausted) ao processar imagens de alta resolução.
A navegação de páginas e a troca de filtros por federação no Ranking de Seleções agora ocorrem dinamicamente via AJAX, sem recarregar a tela, mantendo a URL atualizada e navegação instantânea.
Redesenho completo da tela de importação de súmulas e conferência de jogos de seleções no padrão Visual 2.0 (Light Theme), com cards glassmorphism, campos integrados, cabeçalho dinâmico e tabela de revisão moderna.
Reformulação completa da tela de Criar/Editar Jogo no padrão Visual 2.0, removendo conflitos de CSS externos, organizando o placar, escalações lado a lado e eventos com design limpo.
Corrigida a visibilidade dos estados de carregamento, sucesso e erro na caixa de upload de arquivos, exibindo agora apenas a instrução inicial de arrastar/selecionar.
Corrigida a cor do texto do botão 'Editar Partida' em Detalhes da Partida do Ranking, garantindo contraste branco e legibilidade perfeita sobre o fundo azul.
Corrigido o dimensionamento do botão 'Salvar Partida' para tamanho compacto e ajustado o alinhamento e espaçamentos internos dos dropdowns de seleções e atletas (Select2).
Definido layout fixo e larguras equilibradas para as colunas de minuto, seleção, tipo de lance, atleta e botão de adicionar evento na tela de edição de partidas.
Removido o botão 'X' de limpeza de seleção nos dropdowns e corrigida a API de busca de países (/api/paises/buscar.php) para carregar e listar corretamente as opções de seleções.
Corrigida a persistência de eventos e escalações para atletas fora do banco ('➕ Digitar nome'), exibindo o campo de texto automaticamente e salvando os nomes e lances corretamente na partida.
A criação de novos jogos e a importação de súmulas estão liberadas para qualquer usuário autenticado; a edição de partidas existentes permanece estritamente restrita a administradores.
Corrigida a injeção do elemento option no DOM ao selecionar atletas existentes no Select2, garantindo que o ID e o nome do jogador sejam serializados e gravados corretamente na partida.
Removido o fundo quadrado azul do botão 'X' de fechamento nas notificações flutuantes (toasts), mantendo fundo transparente integrado à cor do alerta.
Corrigida a condição de exibição de pênaltis nas listagens de partidas, garantindo que disputas em que uma das seleções fez 0 gols de pênalti (ex: 3x0) sejam mostradas corretamente.
Corrigido o relacionamento com a tabela de posições no método getSingleMatchLineup, permitindo que as escalações cadastradas sejam exibidas corretamente na tela de Detalhes da Partida.
Alteradas as colunas timeA_penaltis e timeB_penaltis na tabela jogos para permitir valores nulos (NULL), distinguindo partidas sem disputa de pênaltis daquelas com placares reais (ex: 1x0 ou 3x0) e eliminando erros de integridade na importação.
Ao importar súmulas de jogos já existentes no banco de dados, o campo 'calculado' é mantido inalterado, evitando desmarcar partidas que já haviam sido processadas pelo ranking.
Implementada detecção e reenvio automático do comando de simulação quando o motor Java executa rotinas de compatibilidade/migração com o portal web, garantindo a geração contínua das súmulas.
Corrigida a referência da variável de índice ($j) no cálculo de confrontos do algoritmo Berger para torneios mistos (fase de grupos), eliminando avisos e notices de PHP.
Atualização das telas de Criar Seleção, Seleções do País, Demografia do País e Configurações para o padrão Visual 2.0 com cards glassmorphism, formulários e tabelas modernos integrados ao novo cabeçalho e rodapé.
Modernização completa da página do Blog da FOCA para o padrão Light Theme 2.0 com cards translúcidos glassmorphism em fundo claro, lista de posts estilizada com indicador de post ativo, painel de leitura refinado e tipografia aprimorada.
Inclusão de suporte completo a escalações nos jogos de seleções do Ranking oficial (titulares, reservas, comissão técnica e substituições), com importação automática, visualização lado a lado e novo editor visual moderno restrito a administradores.
Implementação da tela de revisão e conferência interativa na importação de jogos de clubes, permitindo mapeamento com autocompletion, detecção de duplicatas e confirmação em lote.
Implementação de transações PDO atômicas com rollback em todas as rotas de gravação e importação de partidas, garantindo integridade e prevenindo perda acidental de dados.
Atualização do cabeçalho e rodapé em todas as páginas do OctaMotor para a estrutura moderna em tom preto translúcido, corrigindo o overflow vertical e preservando integralmente o layout e identidade visual clássica do simulador.
Modernização completa do simulador de draft e sobrevivência 7vidas para o padrão Dark Theme 2.0 com cards translúcidos glassmorphism sobre fundo clássico CONFUSA, campinho tático aprimorado, roleta estilizada, placar de simulação com eventos coloridos e novo modal de regras.
Modernização visual da página de Escudos Pops para o padrão Light Theme 2.0 com cards translúcidos glassmorphism, grid responsivo, botão de alternância de fases estilizado, animação de zoom nos escudos e feedback visual aprimorado para palpites corretos e incorretos.
Modernização integral de todas as páginas da seção de Ranking (Masculino, Seleções, Regras, Jogos & Recordes, Perfil da Seleção e Detalhes da Partida) com o padrão Visual 2.0, navegação por abas com indicador de página ativa, cards glassmorphism, filtros de federação estilizados, badges de posição e paginação moderna, preservando a estrutura da página de retrospecto.
Aprimorada a exibição da página de retrospecto quando duas seleções nunca se enfrentaram: os medidores e tabelas vazias são ocultados em favor de um card informativo e amigável com destaque dos países.
Migração completa da Central de Jogos de Clubes (listagem com busca em tempo real e ordenação interativa, detalhes da partida com placar em destaque e linha do tempo de eventos, escalações em dois blocos e formulário de edição/criação) para o padrão Light Theme 2.0.
Corrigido erro de estouro de memória (Fatal Error Memory Exhausted) no filtro de registros financeiros através da validação obrigatória do ID do time antes de executar as consultas de movimentações e transferências.
Migração da página de atletas no exterior para o Light Theme 2.0, incluindo pesquisa instantânea com debounce, ordenação interativa de todas as colunas, paginação dinâmica e modal modernizado de repatriação.
Interface moderna em Light Theme para seleção de países, ligas e opções de pacotes de banco de dados HYMT, com controles elegantes e feedback visual do download.
Atualização das telas Meus Parâmetros e Criar Parâmetros para o padrão Light Theme 2.0, com barras de estilo visualmente aprimoradas, edição inline limpa e sliders modernos.
Corrigido erro que impedia a importação de times (.ymt) com mais de 23 jogadores para competições, limitando a vinculação de posições e parâmetros aos limites físicos suportados pela tabela de elencos e escalações do SQLite.
Corrigido o transbordo da tabela de climas durante a edição inline, aplicando layout fixo, proporções otimizadas de colunas e contenção visual em todos os seletores de estações climáticas.
Adicionada auto-migração da coluna lesionado_ate na tabela competicao_suspensos para garantir o registro e controle de lesões em jogadores de times importados (.ymt), além de tratamento de exceções (try/catch) na simulação e escalação.
Atualizado o componente global de paginação (elements/paging.php e tabelas dinâmicas) com setas de navegação direta («, ‹, ›, »), facilitando o salto rápido para a primeira e última páginas e melhorando a fluidez visual em todas as tabelas do sistema.
Migração completa das páginas Meus Estádios, Meus Climas, Meus Técnicos e suas respectivas telas de criação e importação para o padrão Light Theme 2.0, incluindo busca em tempo real, ordenação por colunas e paginação dinâmica via AJAX.
Emails de nova proposta para técnico agora incluem nome do técnico, nome e escudo do clube proponente e nível. Corrigido bug em que o usuário recebia email vazio sem informações da proposta.
Corrigido bug em que propostas para técnicos sem clube (clubeOrigem=0) sempre disparavam email mesmo quando o proponente era o próprio dono do técnico — agora o sistema auto-aceita corretamente.
Migração das páginas 'Meus Times' e 'Criar Time' para o novo layout premium Light Theme, com ordenação por coluna, ocultação de botões secundários ao editar, correção de transbordo de upload, sliders modernos e responsividade completa.
Implementados avisos visuais automáticos no assistente de associação que sinalizam quando um clube está em outra liga ou quando um jogador/técnico pertence a um time diferente do que está sendo importado.
Restringida a funcionalidade de associação/atualização inteligente de importados exclusivamente a administradores. Usuários regulares importam diretamente como novos por padrão.
Corrigido erro 500 ao votar em sugestões. A lógica de curtir/votar foi portada de stored procedure do banco para consultas puras em PHP/PDO, eliminando dependências que causavam falhas se a procedure estivesse ausente.
Configurada a página de sugestões para exibir apenas as pendentes por padrão ao carregar, e ajustadas as consultas e algoritmos de ordenação para que itens pendentes sempre apareçam no topo.
Remodeladas as páginas de Contato, Sugestões/Bugs e Sobre/Tutorial com o novo design responsivo Light Theme, tabelas com badges de status, formulários com visual premium e conteúdo atualizado.
Atualizados os modais de login/logout, a página apenas_membros.php e todas as telas da Área de Admin para os novos padrões visuais Light e Dark Theme 2.0. Corrigidos bugs de redirecionamento e redeclaração de funções na área admin.
Impedido o registro de log de transferência no histórico de jogadores e técnicos quando o clube de origem é o mesmo do clube de destino.
Nova apresentação oficial de clubes inspirada no design editorial clássico da revista Placar dos anos 90/00, incluindo foto portrait de destaque e cards de jogadores estilo figurinha colecionável.
Corrigidos conflitos de campos obrigatórios sem valor padrão (como ModificadorNivel, salario e clubeVinculado) em bancos MySQL em modo estrito ao salvar contratos de técnicos e jogadores.
Implementado assistente inteligente na importação de times (.ymt) e elencos (.jog) para associar jogadores aos registros existentes e preservar o histórico. Modernizado visualmente o dropzone e o layout de todas as páginas de importação (jogadores, times e árbitros) no padrão Visual Guidelines 2.0.
Corrigida a exportação do banco de dados SQLite (database.db3) que saía vazio ao adicionar um checkpoint de gravação WAL e fechar a conexão de forma segura antes de realizar a compressão ZIP.
Corrigido o botão de importação .ymt (ajuste de delegação de eventos e filtro de extensão do arquivo) e adicionado suporte para controle de lesões/cartões de equipes importadas.
Corrigido um erro de sintaxe (chave não fechada no loop de jogadores suspensos) que causava erro 500 ao carregar a página de estatísticas de competições.
Restaurada a cor de destaque (verde/vermelha) na listagem de janelas e removida a coluna legada. Redesenhados os formulários e filtros de busca avançada de jogadores e técnicos no padrão Light Theme com sliders e seletores modernos. Implementado bloqueio de propostas em janelas fechadas.
Atualização das listagens de Últimas e Maiores Transferências, Jogadores mais Valiosos e Janelas de Transferência no Mercado (/mercado/transferencias.php) para o novo Light Theme visual padrão, com paginação reativa via AJAX e melhor espaçamento entre clubes e ligas.
Atualização da página principal do Mercado (/mercado/) para o novo layout baseado em cards e grid, com o tema visual verde (esmeralda e deep green).
Corrigido o botão de importação de arquivo .ymt em competições e implementado o controle de lesões e cartões para times externos (não cadastrados no portal) por meio da tabela de status do torneio.
Correção de erro de propriedade indefinida ao processar a duração de lesões de jogadores a partir do arquivo de partida.
Atualização das páginas de listagem, inserção e importação de árbitros para o novo layout (Light Theme), melhorando a responsividade e consistência visual do site.
Adicionado card de atalho na Home para o Poltrona Score. Ajustada a aba de resultados anteriores para agrupar as partidas por data em ordem cronológica decrescente, com identificação das competições direto nos cards.
Ajustado o alinhamento do texto dos marcadores de países (ligas/mapa) para o lado esquerdo caso estejam localizados muito próximos da borda direita do mapa, evitando que o texto ultrapasse a tela ou quebre o layout.
Alterada a lógica do filtro de status na API de busca de países: 0 agora filtra apenas países ativos e 1 traz tanto ativos quanto inativos (sem aplicar filtro de atividade).
Corrigida a lógica de atualização no banco de dados que impedia a desmarcação da opção 'CONFUSA?' ao salvar as alterações do país na área do usuário.
Atualizado o quadro de ligas (geral.php) para o novo padrão visual Light Theme do site, com contêineres e cards translúcidos, tabelas modernas responsivas adaptadas para celulares e tipografia premium.
Adicionado recurso para donos de jogadores editarem e excluírem qualquer registro do histórico de transferências do jogador diretamente através da tabela de transferências. Reposicionadas as marcas de carreira gerais para uma barra horizontal abaixo das informações gerais com cores corretas para os cartões. Adicionado suporte e exibição garantida de desempenho por clube na tabela e botões de ação padronizados. Aplicada otimização responsiva completa para dispositivos móveis, garantindo o tamanho fixo do campo tático para perfeito alinhamento, movendo o botão de salvar atributos para dentro do card e corrigindo uma tag HTML de fechamento extra (stray div) que causava espaçamento indesejado abaixo do rodapé no servidor.
Modernizada a página de visualização do jogador aplicando o layout Light Theme (padrão das páginas internas do site), integrando desfoque de fundo (backdrop-filter) e ajustando o gráfico Plotly para o tema claro. Corrigido o alinhamento de blocos, sobreposições e alinhamento das colunas da tabela de transferências; removida tag PHP perdida na página.
Adicionado recurso para donos de jogadores registrarem transferências do passado diretamente no histórico do jogador através de um novo modal na tela de detalhes do jogador, sem alterar o contrato ou clube atual.
Adicionadas regras específicas no AGENTS.md sobre tratamento case-sensitive em SQL e fallback para comandos executados via shell_exec.
Corrigida a caixa (case-sensitivity) do alias da tabela clube (CD.Escudo para cd.Escudo) na consulta de transferências, resolvendo o erro de prepare no banco de dados em ambientes Linux.
Implementado fallback automático para carregar a imagem original caso o otimizador pngquant falhe ou não esteja disponível no servidor, evitando erros fatais durante o upload de escudos e imagens.
Criadas as versões .shtml estáticas das páginas de erro (400, 403, 404, 500 e 503) livres de PHP, prontas para serem copiadas e configuradas diretamente no servidor Web (Apache/Nginx). Adicionado flex-shrink: 0 ao rodapé (footer) para manter a altura padrão de 60px sem sofrer compressão flexbox.
Corrigido o erro que interrompia a simulação de partidas com a mensagem 'Erro ao criar compatibilidade com a versão 2.10'. A limpeza de tabelas temporárias residuais foi aplicada tanto na simulação manual (simular_partida.php) quanto na simulação automática (cron_simular_jogos.php).
Ativado o modo de gravação WAL (Write-Ahead Logging) e configurado o busy_timeout de 5 segundos nas conexões SQLite para evitar erros de banco travado (database is locked).
Corrigido erro que interrompia a exportação de banco de dados do país devido a nomes de escudos com caracteres especiais/entidades HTML duplicadas (como '&amp;'). Agora os caminhos são limpos e testados antes da cópia.
Comentado o log de aviso de nenhum jogo encontrado para uma competição no refresh_match_list.php para evitar a poluição do arquivo php_errors.log.
Aumentado o limite de memória global para 256M a fim de evitar estouros no processamento de imagens, e corrigida a verificação do formato PNG na função de importação.
Corrigido erro 'Undefined offset' que ocorria ao finalizar a leitura de linhas na importação de planilha de jogadores.
Habilitada a opção para mover países para fora da CONFUSA no Quadro de Países, e a tela foi completamente redesenhada com o novo design system Light Theme premium.
Desativado o fluxo de deploy automático via FTP no GitHub Actions devido a problemas de leitura do arquivo de estado no servidor.
Ajustada a comparação de redirect_uri no fluxo OAuth para ignorar a porta quando o host for localhost, permitindo o desenvolvimento local flexível.
Removidas as diretivas locais de ErrorDocument do .htaccess principal, delegando o tratamento de páginas de erro ao servidor LiteSpeed.
Adicionado o diretório de configurações do Octamotor no .gitignore para evitar o envio de credenciais e backups de banco locais.
Adicionado um contador dinâmico de fichas pendentes no card do painel, e corrigida a exibição de competições sem prazo definido na lista.
Corrigido erro 500 ao salvar opções de competição, garantindo a criação das tabelas no SQLite, adicionando tratamento de exceções robusto e validando conexões nulas na classe SQLiteDatabase.
Restaurado o card para 'Enviar Fichas' na página inicial do painel de usuário.
Habilitada a área da COISO TV na página inicial com link direto para coisotv.libracromos.site.
Adicionada a pasta 'full hexa suite' no .gitignore para evitar commits acidentais de arquivos locais.
Ajustado o fluxo para notificar apenas transferências legítimas de clube para clube, ignorando contratações de agentes livres (sem clube) ou importações automáticas de jogadores.
Remoção de marcações Markdown que quebravam links de escudos, correção do caminho absoluto da bandeira do país do jogador e mapeamento amigável dos tipos de transferência para exibir nomes em vez de IDs numéricos.
Criação do fluxo de deploy automático para sincronizar apenas arquivos modificados na produção via FTP a cada novo push no branch master.
Configurado o SMTPOptions para contornar problemas de verificação de SSL/TLS com o hostname, resolvendo a falha no envio do e-mail de Boas-vindas e Recuperação de Senha.
Adicionado tratamento de exceção com try-catch ao enviar o e-mail de boas-vindas no cadastro de usuários, evitando que a tela trave caso ocorra um erro de SMTP.
Configurado o busy_timeout de 5 segundos e o modo de gravação WAL no SQLite para evitar o erro de banco travado (database is locked), otimizando a concorrência e compatibilidade com pastas sincronizadas.
Removida a tipagem de propriedades e métodos nas classes Transfer e TransferNotifier para garantir compatibilidade completa com versões do PHP anteriores à 7.4, resolvendo o erro de sintaxe ao aceitar propostas.
Migrado o Service Worker raiz para uma estratégia Network-First limpa e segura. Isso garante que os usuários sempre carreguem os estilos e ícones mais recentes direto da rede ao estarem online, mantendo a instalação do PWA funcionando.
Eliminada a tabela legada da aba Elenco, substituída por grade de cards modernos com bordas coloridas por titularidade (verde = Titular, azul = Reserva, cinza = Suplente), glassmorphism e hover com elevação.
Corrigido bug crítico onde a classe CSS do card invadia a div #quadro-container, corrompendo o ID do time enviado via AJAX e causando erro 500 nas trocas.
Adicionada a foto circular do jogador ao lado do uniforme em cada posição no campo tático. O goleiro também passou a exibir seu uniforme (camisa 2) e foto. Cores do campinho agora são sólidas por linha (Goleiro=Amarelo, Defesa=Azul, Volante=Teal, Meia=Verde, Armador=Roxo, Atacante=Vermelho).
As siglas de estilo de jogo dos atacantes (Am = Movimentação, Aa = Área) agora aparecem como badges coloridos no canto superior do card do campinho e continuam alternando corretamente ao clicar com o botão direito.
Adicionado touch-action: none nos blocos do campinho para impedir que o arrasto de jogadores role a página em dispositivos touchscreen.
O aviso 'Atualizando...' que deslocava o layout da página ao aparecer foi substituído por um toast flutuante no canto inferior direito, que aparece e desaparece automaticamente sem mexer no conteúdo.
O painel de seleção de Capitão e Cobradores de Pênalti foi reformulado com tipografia Kanit, campos estilizados e botão de envio centralizado com gradiente esmeralda e micro-animação. Campos sem seleção continuam sendo destacados em vermelho (lightcoral).
Padronização das telas de resumo financeiro e de inserção de transações com o Light Theme padrão do site (fundo claro com gradiente e glassmorphism), inputs e selects modernos, além da inclusão de tags data-label e wrappers cell-value para responsividade mobile e botões de retorno unificados.
Centralização dos uniformes, estádio e botão de apresentação no mobile. Correção de colisão de dados e ocultação definitiva de elementos fantasma na listagem de jogadores. Implementação de botões de ação rápidos inline na aba de elenco e inclusão da biblioteca Touch Punch para habilitar drag-and-drop por toque no campinho tático simplificado no mobile.
Desabilitado e estilizado (grayed out) o seletor de árbitros na lista de jogos por se tratar de uma funcionalidade ainda não implementada.
Implementado o algoritmo oficial de Berger do Hexacolor Scheduler v1.2 na geração de tabelas de pontos corridos e mistas, assegurando a rotação ideal de equipes e alternância correta de mandos de campo.
Desenvolvido o relatório de avaliação e previsão tática para o confronto Polusca vs Orion com base nos parâmetros .ymt importados, detalhando estilos e mentalidades de técnicos, goleiros e punição de formação.
Corrigida a opção de pênaltis e prorrogação no mata-mata e na final, carregando as regras dinâmicas no JSON de simulação. Corrigido o bug que exibia a fase de pontos corridos como Oitavas de Final e impedia a exibição da classificação única. Ajustamos a fase de grupos do formato Misto para fase 2 (fase de grupos) e corrigimos o mapeamento de rótulos do mata-mata no painel de estatísticas.
Comentado o log temporário do arquivo config/session.php que escrevia continuamente no arquivo debug_session.txt em cada requisição de página para evitar consumo excessivo de disco (estava acumulando até 84MB).
Adicionado parâmetro -Djava.awt.headless=true para corrigir erros de AWTError no servidor Linux. O cron foi configurado para buscar partidas das próximas 24h a partir do momento de execução. Além disso, criamos uma validação para impedir que falhas na simulação salvem um placar falso de 0x0 no banco de dados, um injetor automático das versões de compatibilidade requeridas pela engine no SQLite temporário (2.8, 2.9.1, 2.10, 2.13), e desenvolvemos um script utilitário (/competicoes/hexacolor/reset_failed_simulations.php) para varrer e resetar automaticamente os jogos que ficaram travados em 0x0 sem arquivo de súmula.
Adicionado um botão padronizado de 'Voltar para a Competição' no rodapé de todas as subpáginas de gerenciamento (Estatísticas, Jogos, Equipes, Opções e Escalação), facilitando o retorno rápido à tela principal do torneio.
Corrigido erro que impedia a simulação correta das partidas no ambiente de produção (jogos 0x0) e consequentemente não gerava a imagem da súmula. Ajuste nos caminhos absolutos do servidor Linux e unificação para utilização da versão V2 do motor de simulação (HexacolorYMTv2.jar) em todos os ambientes.
Corrigido o layout quebrado da listagem de competições no celular, organizando a exibição em cards e centralizando as informações de destaque.
Ajustado o sistema para que, ao impersonar um usuário (login via Admin%Usuario), a sessão assuma corretamente os mesmos privilégios e permissões do usuário destino, permitindo testes mais precisos sem manter status de administrador, mas preservando o selo visual de impersonação.
Corrigido erro fatal (PDOException) que impedia salvar as configurações de árbitros de uma competição. O INSERT na tabela SQLite 'trioarbitragem' usava nomes de colunas incorretos (NomeArbitro, NomeAuxiliarUm, NomeAuxiliarDois) em vez dos nomes reais do schema (Arbitro, Auxiliar1, Auxiliar2).
Corrigidos múltiplos bugs que impediam a inserção de times em competições: (1) Parâmetros PDO duplicados na query SQL de alterarPaisTime causavam erro fatal; (2) O método directRun do SQLite aplicava htmlspecialchars na query SQL, corrompendo os dados antes da execução; (3) getConnection do SQLite fazia echo do erro quebrando respostas JSON; (4) Tabelas SQLite não eram inicializadas em competições novas.
Alterado o antigo link do Portal COISO para COISO TV e sinalizado como 'Em Breve' (desabilitado) na página inicial.
Adicionado novo card e gaveta de ações para 'Envio de Fichas' diretamente na tela inicial do usuário. Permite enviar times do portal ou importar arquivos .ymt para competições ativas dentro do prazo de envio de forma totalmente inline, com sinalização de urgência quando restarem menos de 7 dias.
Redirecionamento automático para a tela de índice de competições após criar uma competição com sucesso. Correção do posicionamento dos alertas (toasts) para que flutuem no topo direito (estilo toast moderno) sem entrar atrás do cabeçalho da página, com suporte a auto-ocultação após 5 segundos. Correção do erro fatal de classe 'SQLiteDatabase' ausente ao abrir competições recém-criadas. Correção da chamada da imagem da federação para letras minúsculas para compatibilidade com sistemas Linux (ex: feasco.png).
Migrada a página de jogos ativos para o padrão estético de tema claro (estilo branco) consistente com as demais páginas redesenhadas (como Minhas Propostas e Competições), ajustando o contraste de textos, botões e elementos informativos.
Implementada detecção ultra-robusta via $_SERVER['REQUEST_URI'] no arquivo elements/footer.php para aplicar os estilos de rodapé sticky ('position: relative !important') nas páginas redesenhadas. Corrigido o colapso de layout removendo dinamicamente 'margin-bottom: 50px' de html/body nessas páginas para evitar que o conteúdo transborde, e mapeado o aprendizado de fluxo de diagnóstico nas diretrizes gerais do projeto (.agents/AGENTS.md).
Ajustada a visibilidade do cabeçalho em páginas antigas (sem CSS redesign): ocultados o avatar e nome redundantes no botão do menu (exibindo o ícone tradicional de três linhas) e mantido apenas o identificador padrão para evitar poluição visual.
Finalizada a integração do notificador de transferências com o Discord. Corrigida a formatação de imagens usando caminhos absolutos e adicionado suporte para exibição estilizada de valores e data da transferência.
Adicionado estilo global de fallback para os avatares do usuário no cabeçalho e menu lateral, impedindo que imagens grandes fiquem gigantescas em áreas ainda não repaginadas do site.
Repaginada a tela de alterar senha e preferências de conta com base nas novas diretrizes de design system, implementando glassmorphism real e corrigindo o conflito de cabeçalho e rodapé antigos.
Corrigido o erro Fatal PDOException 'Invalid parameter number' na tela de jogos ativos do usuário, separando os placeholders nomeados na consulta. Ajustado o layout do container para usar 'redesign-container', resolvendo o footer flutuante e adicionando espaçamento superior para não cortar no cabeçalho.
Criação de páginas de erro estilizadas (400, 403, 404, 500 e 503) com layout de glassmorphism, suporte responsivo e imagens divertidas fornecidas pelo usuário.
Renomeado o arquivo principal de índice de competições (de indice_competicoes.php para index.php) visando simplificação de rotas e consistência de padrões de URL do projeto.
Incorporado o crachá de perfil do usuário (nome e avatar/foto) diretamente no botão acionador do menu sanduíche, ocultando a barra de texto central no topo do site para uma navegação mais limpa. Adicionado suporte a banco de dados e upload de avatar personalizado na página de preferências, além de um banner de perfil detalhado com etiqueta/badge especial de Administrador no topo do menu lateral.
Adicionado painel de próximos jogos de times do usuário na área de membros com realce e contador de desfalques ativos. Criada exportação e importação via Excel (.xlsx) das tabelas de jogos das competições com validação de escopo. Implementada a opção de salvar a escalação modificada em jogo de forma definitiva para o clube. Realizado rebranding da tela de criação de competições com Glassmorphism e botões da barra de ferramentas. Implementado mecanismo de fila de espera (lock de concorrência com timeout de 45s) na simulação de partidas para evitar conflitos de simulação concorrente no servidor e garantir atualização automática da tela do usuário quando liberado.
Implementada tela de carregamento (loader) em tela cheia com progresso detalhado dinâmico durante a simulação de jogos. Adicionada badge visual destacando lesões ativas na página do jogador. Concedidos privilégios de gerenciador/administrador das competições para seus criadores correspondentes.
Corrigido o travamento (loop infinito) ao simular partidas definindo como null todas as declarações PDO ativas antes de fechar a conexão SQLite, liberando totalmente o banco database.db3. Impedida a edição/exclusão de partidas já simuladas. Configurado o streaming dinâmico da imagem PNG da súmula em qualquer rodada usando glob via PHP para contornar erros 404 e problemas de caracteres especiais no Windows.
Implementada a possibilidade de salvar escalações e desfalques manuais específicos para cada partida. O sistema agora carrega e aplica essas alterações temporariamente durante a simulação do jogo sem sobrescrever de forma definitiva a escalação padrão do clube.
Corrigido o erro de índices indefinidos (Undefined index) ao salvar a escalação pré-jogo, mapeando corretamente as colunas de posições no banco de dados SQLite.
Corrigido erro fatal ao carregar a escalação. Adicionado seletor de posição por jogador com base nas posições disponíveis, opção de marcar jogador como indisponível manualmente e limite visual de 11 titulares com contador em tempo real. Layout reformulado com tema escuro e botões corrigidos.
Corrigida a importação dupla de cabeçalho que quebrava os estilos na página de confrontos e refatorado o visual dos botões de paginação ativa para evitar textos desbotados.
Desenvolvido o painel completo de estatísticas do torneio contendo tabela de classificação de grupos, chaves de mata-mata, artilharia, assistências, cartões, suspensões e departamento médico.
Adicionado seletor de prioridade de desempate para a fase de grupos nas configurações da competição, permitindo ordernar os critérios de Saldo de Gols, Gols Pró, Vitórias e Confronto Direto.
Atualizada a tela de opções e configurações com cartões translúcidos integrados ao tema claro, novos controles de inputs e Select2 múltiplos totalmente estilizados no padrão CONFUSA 2.0.
Adicionado painel de configuração de arbitragem (específicos, país ou federação) e estádios (da sede, com opção de desativar os estádios padrões de mandantes) na tela de opções da competição.
Removidos estilos inline e reestruturada a página de lista de confrontos da competição com cards responsivos no mobile, formulário de novos jogos e placares modernos.
Atualizada a tela de gerenciamento de equipes participantes da competição com cards responsivos de vagas, customização moderna para Select2 e botões de ação estilizados.
Migrado o controle de desfalques do SQLite para o banco central MariaDB: adicionada coluna lesionado_ate (data limite) na tabela jogador e criada tabela competicao_suspensos (por torneio), com sincronização dinâmica no simulador.
Reestruturada a página principal de status de competições com visual moderno, banner da competição em glassmorphism, barra de progresso de equipes inseridas e grid de ações estilo home hub.
Aplicadas melhorias visuais e estilização responsiva na página do índice de competições para alinhar-se com o layout premium e cores das telas de propostas.
Corrigido erro no carregamento e salvamento de escalações onde colunas como Titular, Capitao e Clube eram lidas diretamente do jogador ao invés de usar as tabelas elenco/escalacao.
Corrigido erro 500 no endpoint de busca de competições adicionando tratamento de exceções robusto e mantendo compatibilidade de parsing no frontend.
Corrigidos avisos de índice indefinido para o parâmetro de time nas ligas e ranking (teamstatus.php). Adicionado tratamento global amigável para falhas de conexão com o banco de dados (database.php) para evitar Fatal Errors.
Atualizado o arquivo .gitignore para ignorar arquivos locais e relatórios gerados pela ferramenta de compatibilidade de PHP (PHPCS e PHPCompatibility).
Adicionada a exibição das colunas de Data de Proposta e Data de Conclusão (exibida em branco se não houve ação) nas tabelas de jogadores e técnicos. O banco de dados agora atualiza a data de conclusão (dataConclusao) automaticamente ao aceitar, recusar ou contrapropor.
Ajuste na contagem de propostas ativas da Minha Área para focar somente em ações pendentes (recebidas e contrapropostas) e redesign da tela de propostas de técnicos no mesmo estilo visual moderno.
Atualização da tela de Minhas Propostas de Jogadores para um design limpo e moderno. A página conta com um fundo cinza claro premium e marca d'água azul da CONFUSA, com as propostas exibidas em linhas coloridas de acordo com o status (verde para aceitas, vermelho para recusadas, amarelo para contrapropostas), botões de ação e paginação moderna sem textos auxiliares redundantes.
Atualização da página de Minha Área para o novo sistema visual 2.0 com um tema exclusivo em tons de laranja e âmbar, incluindo marca d'água integrada em laranja e fundo dos cartões em tom terracota escuro. Os links agora são exibidos em cards modernos no estilo glassmorphism, com imagens superiores dinâmicas e novos indicadores em tempo real para propostas de transferências pendentes e status de sincronização com o simulador HYMT.
Corrigido um erro fatal que ocorria ao tentar confirmar a importação de jogos duplicados/existentes, direcionando a chamada para o método correto de atualização de placar no banco de dados.
A tabela de revisão de jogos agora utiliza o mesmo estilo visual do restante do site (fundo branco, bordas suaves, cores laranja e azul escuro). O box de upload e os seletores de campeonato/fase ficam ocultos durante a revisão, evitando poluição visual. Linhas fantasmas (sem arquivo válido) são filtradas automaticamente. Adicionado botão 'Nova importação' para reiniciar o fluxo sem recarregar a página.
Criado um fluxo de validação intermediário para arquivos .hyl. Agora, o usuário visualiza uma tabela de revisão com o status dos jogos, mapeamento automático de países/bandeiras e pode corrigir divergências usando seletores dinâmicos (Select2) antes de confirmar a importação do lote todo de uma só vez.
Criado o novo layout e estilo da home (index_v2.php e css/home_redesign.css) com base nas diretrizes de alta fidelidade visual. O novo hub conta com glassmorphism real, grid responsiva moderna, tipografia limpa e links sanitizados.
Criado o script Cron para simulação automática diária das partidas agendadas. Implementado o controle de suspensões e lesões no JAR, a padronização em data/database.db3, a tela de escalação pré-jogo (escalacao_jogo.php) com consulta ao dono da equipe pela MariaDB e obtenção de PosicaoBase via JOIN na tabela posicaojogador, agendador com rodadas espaçadas em 3 dias para torneios mistos e ícone de escalação ao lado dos times.
Corrigida falha na aprovação de propostas de transferências para jogadores com siglas de posições textuais (caso do Jogador 51276). Corrigido erro de chamada estática inexistente na classe Transfer e adicionado bloco try-catch capturando Throwable para registro detalhado de erros no servidor.
Corrigidos múltiplos avisos de índices indefinidos (Undefined index) na página de apresentação do time (team_presentation.php) e no status do país (paisstatus.php), um erro de sintaxe SQL (PDOException) em Time::readExtraInfo, e um erro de coluna não encontrada (PDOException) no método countAll da classe Liga através da parametrização de consultas SQL e validação de parâmetros.
Criação do servidor MCP nativo híbrido (SSE e POST) sem dependências. Suporta autenticação automática por tokens gerados na conta, buscas por nome do clube, ferramenta para comparação de elencos e filtros inteligentes de mercado (como posições, nacionalidade do jogador e dono do time).
Redesenhada a antiga página de alteração de senha para um painel completo de Preferências. Permite editar o Nome Real de exibição separadamente da senha, traz o link do MCP parametrizado com manual passo a passo explicativo (@ChatGPT) e o download do ícone oficial.
Desenvolvimento do script check_php, inclusão do polyfill mbstring, correção de divisão por zero no status da liga, tratamento de erro de tipo de dados nos técnicos e limpeza de avisos de chaves indefinidas no status do time.
Implementada limpeza assíncrona automática de sessões locais expiradas (com mais de 30 dias) para controlar o crescimento do diretório no servidor compartilhado.
Ajustado o layout da Área do Usuário (Painel) para ser totalmente responsivo em dispositivos móveis, adaptando os quadros de opções de forma idêntica à página principal.
Corrigidas vulnerabilidades de injeção de SQL em diversas consultas do sistema (classes Clube, Liga, Paises, Competicao_clube) migrando para Prepared Statements com bindParam e validação numérica rigorosa para neutralizar entradas maliciosas.
Aumentado o limite de uploads simultâneos (max_file_uploads = 300) em php.ini, ampliada a memória do script de busca (memory_limit = 512M) para evitar erros de estouro de RAM e adicionado suporte a variáveis de ambiente (.env).
Implementada compactação recursiva segura (addDirToZip) no ZipArchive para evitar erros de pastas tratadas como arquivos, adicionado tratamento robusto com Throwable no envio de e-mails via PHPMailer e validações de existência de arquivos temporários antes de excluir.
Corrigidos múltiplos avisos de variáveis, offsets e índices indefinidos na navegação de usuários deslogados, no gerador de elencos (tamanho mínimo 25) e em páginas como alterar_atributos.php, criar_demografia.php, listajogos.php, match_info.php e alterar_time.php.
| Time Mandante | Gols | Pênaltis | Gols | Time Visitante | Data | Campeonato | Calc? |
|---|---|---|---|---|---|---|---|
| 3 | - | 1 | 2018-07-02 | Copa do Mundo | Sim | ||
| 0 | - | 0 | 2018-06-24 | Amistoso | Sim | ||
| 2 | - | 3 | 2018-01-27 | FEASCOPA | Sim | ||
| 1 | - | 1 | 2018-01-25 | FEASCOPA | Sim | ||
| 0 | - | 0 | 2018-01-23 | FEASCOPA | Sim | ||
| 1 | - | 2 | 2018-01-19 | FEASCOPA | Sim | ||
| 2 | - | 2 | 2018-01-16 | FEASCOPA | Sim | ||
| 2 | - | 3 | 2017-11-21 | Olimpíadas | Sim | ||
| 0 | - | 6 | 2017-11-18 | Olimpíadas | Sim | ||
| 0 | - | 2 | 2017-11-15 | Olimpíadas | Sim | ||
| 1 | - | 1 | 2017-07-20 | Regional de base / pré-olímpico | Sim | ||
| 4 | - | 0 | 2017-07-17 | Regional de base / pré-olímpico | Sim | ||
| 0 | - | 3 | 2017-07-15 | Regional de base / pré-olímpico | Sim | ||
| 1 | - | 0 | 2017-06-21 | Eliminatórias | Sim | ||
| 4 | - | 0 | 2017-06-18 | Eliminatórias | Sim |
| Data | Campeonato | Pontos | |||||
|---|---|---|---|---|---|---|---|
| Patagônia do Sul | 4 | X | 0 | São Pedro | 2017-07-17 | Regional de base / pré-olímpico | 52 |
| Patagônia do Sul | 3 | X | 0 | Sandvíches del Nort | 2017-07-15 | Regional de base / pré-olímpico | 46 |
| Patagônia do Sul | 4 | X | 0 | Vera Cruz | 2015-09-04 | Regional de base / pré-olímpico | 42 |
| Data | Campeonato | Pontos | |||||
|---|---|---|---|---|---|---|---|
| Patagônia do Sul | 0 | X | 2 | Suideinland | 2016-07-10 | Copa do Mundo | -56 |
| Patagônia do Sul | 0 | X | 4 | Escócia Austral | 2016-07-17 | Copa do Mundo | -48 |
| Patagônia do Sul | 0 | X | 2 | União das Tormentas | 2017-11-15 | Olimpíadas | -45 |
| Adversário | Ocorrências | ||
|---|---|---|---|
| São Pedro | X | Patagônia do Sul | 6 vezes |
| Cucharras | X | Patagônia do Sul | 5 vezes |
| Yamato | X | Patagônia do Sul | 5 vezes |
| Brávia & Outlands | X | Patagônia do Sul | 5 vezes |
| Centauro | X | Patagônia do Sul | 4 vezes |
| Drakva | X | Patagônia do Sul | 4 vezes |
| Orion | X | Patagônia do Sul | 4 vezes |
| União das Tormentas | X | Patagônia do Sul | 4 vezes |
| Hoven Islands | X | Patagônia do Sul | 3 vezes |
| País Menor | X | Patagônia do Sul | 3 vezes |
| Adversário | Ocorrências | ||
|---|---|---|---|
| Patagônia do Sul | X | Hoven Islands | 3 vezes |
| Patagônia do Sul | X | Drakva | 3 vezes |
| Patagônia do Sul | X | Cucharras | 3 vezes |
| Patagônia do Sul | X | Albescentlands | 2 vezes |
| Patagônia do Sul | X | América Saudita | 2 vezes |
| Patagônia do Sul | X | São Pedro | 2 vezes |
| Patagônia do Sul | X | Brávia & Outlands | 2 vezes |
| Patagônia do Sul | X | Yunjian | 2 vezes |
| Patagônia do Sul | X | Centauro | 2 vezes |
| Patagônia do Sul | X | Polinásia Central | 1 vez |
| Adversário | Ocorrências | ||
|---|---|---|---|
| Patagônia do Sul | X | São Pedro | 3 vezes |
| Patagônia do Sul | X | Orion | 2 vezes |
| Patagônia do Sul | X | Brávia & Outlands | 2 vezes |
| Patagônia do Sul | X | Cucharras | 2 vezes |
| Patagônia do Sul | X | União das Tormentas | 2 vezes |
| Patagônia do Sul | X | Pomedor | 1 vez |
| Patagônia do Sul | X | Catalenha | 1 vez |
| Patagônia do Sul | X | Dalkland | 1 vez |
| Patagônia do Sul | X | Outside a Place | 1 vez |
| Patagônia do Sul | X | Yomotsu Moroshima | 1 vez |
| Adversário | Ocorrências | ||
|---|---|---|---|
| Patagônia do Sul | X | Yamato | 3 vezes |
| Patagônia do Sul | X | Lavônia | 3 vezes |
| Patagônia do Sul | X | União das Tormentas | 2 vezes |
| Patagônia do Sul | X | Rapa Uro | 2 vezes |
| Patagônia do Sul | X | Monolito | 2 vezes |
| Patagônia do Sul | X | Verstíngia | 2 vezes |
| Patagônia do Sul | X | Vostina | 1 vez |
| Patagônia do Sul | X | Vera Cruz | 1 vez |
| Patagônia do Sul | X | Íssvar | 1 vez |
| Patagônia do Sul | X | Polinásia Central | 1 vez |
| Data | Campeonato | |||||
|---|---|---|---|---|---|---|
| Patagônia do Sul | 4 | X | 0 | São Pedro | 2017-07-17 | Regional de base / pré-olímpico |
| Patagônia do Sul | 4 | X | 0 | Cucharras | 2015-03-02 | Eliminatórias |
| Patagônia do Sul | 4 | X | 0 | Tarmaquestão | 2017-06-18 | Eliminatórias |
| Patagônia do Sul | 4 | X | 0 | Khangtso | 2014-09-02 | Amistoso |
| Patagônia do Sul | 4 | X | 0 | Vera Cruz | 2015-09-04 | Regional de base / pré-olímpico |
| Patagônia do Sul | 4 | X | 1 | Hoven Islands | 2016-11-16 | Amistoso |
| Patagônia do Sul | 3 | X | 0 | Yunjian | 2017-04-29 | Eliminatórias |
| Patagônia do Sul | 3 | X | 0 | Sandvíches del Nort | 2017-07-15 | Regional de base / pré-olímpico |
| Patagônia do Sul | 4 | X | 2 | Pomedor | 2015-07-11 | Copa do Mundo |
| Patagônia do Sul | 3 | X | 1 | Brávia & Outlands | 2014-09-02 | Amistoso de base |
| Data | Campeonato | |||||
|---|---|---|---|---|---|---|
| Patagônia do Sul | 0 | X | 6 | Yamato | 2017-03-01 | Eliminatórias |
| Patagônia do Sul | 0 | X | 6 | Monolito | 2017-11-18 | Olimpíadas |
| Patagônia do Sul | 0 | X | 5 | Vostina | 2019-07-08 | Copa do Mundo |
| Patagônia do Sul | 0 | X | 4 | Centauro | 2015-01-06 | Eliminatórias Regionais |
| Patagônia do Sul | 0 | X | 4 | Lavônia | 2016-01-27 | Eliminatórias |
| Patagônia do Sul | 0 | X | 4 | Escócia Austral | 2016-07-17 | Copa do Mundo |
| Patagônia do Sul | 1 | X | 4 | Rapa Uro | 2015-10-07 | Regional de base / pré-olímpico |
| Patagônia do Sul | 1 | X | 4 | Catalenha | 2017-02-08 | Eliminatórias |
| Patagônia do Sul | 1 | X | 4 | Brávia & Outlands | 2015-05-18 | Eliminatórias |
| Patagônia do Sul | 1 | X | 4 | Íssvar | 2018-07-10 | Copa do Mundo |