NacionalidadeTransferências
| Data | Saiu de | Foi para | Valor |
|---|---|---|---|
| 20/01/2025Sem Custo | Sem clube | Oakland Tangent Gauntlet IIsports_soccer0j 0g 0CA 0CV | F$ 0 k |
Desabilitados botoes de escalacao para partidas ja simuladas ou com horario de inicio atingido na tela de Proximos Jogos e no backend.
Ajustado filtro de 10 dias para ignorar restrição ao filtrar por competição ou busca textual, e corrigido cálculo para não exibir partidas retroativas não simuladas.
Garante valor padrão numérico para o código do árbitro ao gravar ou atualizar partidas no ranking oficial, prevenindo erros de restrição de integridade (NOT NULL).
Implementada limitação padrão de janela de no máximo 10 dias no futuro para a lista de jogos ativos e contador da home, reduzindo o excesso de partidas distantes de ligas com alternador rápido para ver todas as datas.
Corrigido estilo dos botões de filtro rápido em Próximos Jogos & Escalações para largura automática e inline, evitando esticamento para 100% causado por login.css.
Adicionado filtro rápido para exibir apenas partidas de competições internacionais na tela de Próximos Jogos & Escalações, com identificador visual dedicado no card do confronto.
Corrigida a consulta de Próximos Jogos & Escalações para vincular o comando do clube ao país associado na vaga (competicao_times), permitindo visualizar partidas em competições de outros usuários mesmo contra equipes externas ou importadas via YMT. Adicionados filtros rápidos por competição e resolução dinâmica de nomes e escudos.
Corrigido o mapeamento de exibição da mentalidade e do estilo de jogo do treinador na página de perfil e nos módulos do sistema, alinhando os índices com a base oficial de 1 a 5 utilizada no motor de jogo e na criação do técnico.
Corrigida a consulta de atletas elegíveis no painel rápido de convocação para seleções nacionais femininas, garantindo a identificação do gênero correto da equipe e disponibilizando apenas jogadoras femininas.
Corrigida a gravação do placar de pênaltis em amistosos e jogos de seleções, garantindo que partidas encerradas sem disputa de pênaltis sejam registradas estritamente com valor NULL no banco de dados e súmulas, em vez de -1.
Adicionada a opção CONFUSA no seletor de federações das opções da competição e na criação de competições, permitindo incluir em lote todos os trios de arbitragem da confederação de uma só vez no banco SQLite do torneio, com sincronização dinâmica no seletor visual e inserção em transação única otimizada.
O simulador manual e o cron de partidas agora sinalizam explicitamente a ausência de árbitros cadastrados na competição, impedindo o erro fatal ArrayIndexOutOfBoundsException no motor Java. A interface de opções da competição agora exibe alertas visuais destacados quando nenhum árbitro está cadastrado e exige a seleção de ao menos um trio de arbitragem antes de salvar as configurações.
Corrigida a inserção de jogadores e entidades no SQLite da competição que falhava quando as colunas de suspensão/lesão já haviam sido criadas por simulações anteriores, devido à falta de especificação explícita das colunas no INSERT. O tratamento de erros de gravação no SQLite também foi corrigido para não mascarar falhas com falsos sucessos.
Corrigida a inicialização de posições na tela de escalação pré-jogo para refletir fielmente a posição tática que o titular já ocupa na equipe (evitando que jogadores versáteis, como o ponta-esquerda do Orion, apareçam com a ponta oposta). A rotina de salvamento agora aloca os titulares estritamente conforme a posição selecionada no dropdown e atualiza os slots táticos e posições na simulação, corrigindo a inversão de meio-campistas e atacantes que afetava o Chroma.
Eliminadas as condições de matching frouxas e colisões por ID negativo no método definirSlotTime e na listagem de jogos. Slots de grupos agora são vinculados estritamente pelo identificador nominal e grupo correspondente, impedindo que times temporários ou índices de vagas sobrescrevam outros confrontos na tabela.
Corrigida a consulta de estatísticas e histórico de partidas do atleta no PoltronaScore. O sistema agora restringe a busca de partidas anteriores aos clubes aos quais o jogador realmente pertenceu (contrato atual, histórico de transferências e partidas com ID explícito), impedindo que homônimos com o mesmo nome (como o Salazar do Miflason/Orion versus Salazar do EC Atlântico/Gavil) herdem jogos, gols e notas de equipes e países diferentes.
Resolvido o erro fatal 1267 (Illegal mix of collations latin1_swedish_ci e utf8mb4) no MariaDB que impedia a abertura do modal de perfil de atletas com caracteres turcos, azeris ou sinais diacríticos (como Elmir Şahmarli, Kərəm Orhanlı, Tōrāj Zarābādi). Corrigidos também nomes de colunas de substituição e guards de funções no backend.
Implementada a leitura da titularidade (titularidade = 1) e da posição única do atleta na escalação (posicaoBase) a partir de contratos_jogador no MariaDB e da tabela escalacao dos bancos SQLite (.db3), espelhando com fidelidade a tática exibida no teamstatus. O campinho e o badge agora refletem o esquema real da equipe (ex: 4-3-3 no Veyran [U20] com 1 PD, 1 PE e 1 Aa), sem forçar 4-4-2 nem duplicar posições. Atualizado o Service Worker e badges visuais para v4.1.
Adicionado badge visual de versão (v4.0) no cabeçalho superior e no rodapé do PoltronaScore, permitindo ao usuário verificar imediatamente se o seu navegador ou aplicativo PWA está executando a versão mais recente dos scripts ou se ainda está preso a uma versão antiga em cache.
Corrigida a lógica de avaliação das partidas recentes no perfil do atleta no PoltronaScore. Jogadores reservas que não entraram em campo não recebem mais nota sintética da partida, preservando a integridade da média de carreira e exibindo status de atuação detalhado (Titular, Entrou aos X' ou Reserva).
Corrigida a resolução do adversário no histórico de partidas recentes do atleta e clubes no PoltronaScore, unificando a consulta com os nomes cadastrados nas tabelas de clubes e bancos SQLite locais, eliminando a exibição genérica de 'vs Adversário'.
Atualizada a versão do Service Worker (v4) com migração para a estratégia Network-First em páginas HTML, scripts e estilos do PoltronaScore, impedindo que o PWA fique preso a versões antigas em cache e forçando a busca direta da versão mais recente na rede.
Corrigida a identificação de esquemas táticos para que reflitam a escalação real de cada equipe (ex: 4-3-3, 3-5-2, 4-5-1) tanto no backend quanto dinamicamente no campinho 2D, eliminando a exibição fixa de 4-4-2. Corrigida a abertura de modais e perfis de atletas cujos nomes contêm caracteres especiais, acentuação (ex: turco, escandinavo) ou apóstrofos através de atributos codificados por data-attributes e busca de fallback em bancos SQLite de competição (.db3).
Corrigido o mapa canônico de decodificação de posições (StringPosicoes) nos endpoints do PoltronaScore, eliminando a inversão de índices que convertia zagueiros (Z) em laterais esquerdos (LE) e meio-campistas (MC) em pontas direitos (PD). Implementada a leitura da tabela de escalação real dos bancos de competição SQLite (.db3), ordenação lateral tática espelhada por flanco, isolamento de técnicos no card de Comissão Técnica e distribuição tática equilibrada de atletas titulares.
Desabilitados todos os fallbacks de emergência e rotinas que inventavam formações 4-4-2 ou sintetizavam dados arbitrários para as equipes. Removidos auto-convocação de atletas, criação automática de seleções não cadastradas, geração de técnicos padrão, criação de reservas genéricos e injeção de atributos sintéticos. O sistema agora opera estritamente com os dados reais do banco de dados, em total conformidade com a exportação .ymt e competições oficiais.
Corrigido vazamento de placares, marcadores e eventos em partidas antecipadamente simuladas no PoltronaScore. Agora o sistema valida a conclusão da partida no tempo real antes de exibir resultados na tela de Rodadas & Jogos, Chaveamento de Mata-Mata, Retrospecto de Clubes, Perfil de Atletas e Detalhes da Partida.
Integrada a rotina de normalização e conversão dinâmica de imagens WebP para PNG no banco SQLite de simulação, garantindo que escudos e uniformes cadastrados no banco principal sejam carregados perfeitamente pelo motor Hexacolor sem exceções de imagem nula.
Adicionadas as propriedades obrigatórias kitTeam1 e kitTeam2 no payload JSON enviado ao motor HexacolorYMTv2.jar, prevenindo falhas de leitura (JSONException) na definição de uniformes da partida.
Corrigida a ordem das colunas no registro do estádio no SQLite temporário da simulação (ID, Nome, Capacidade, Clima, Altitude, Caldeirao) e adicionada validação para strings de temperatura e estilo suportadas pelo Hexacolor, impedindo NullPointerException ao sortear fenômenos climáticos.
Preservada a estrutura canônica de 8 colunas da tabela jogador no SQLite para total compatibilidade com inserções sem especificação de campos, implementando projeção dinâmica via PRAGMA em obterJogadoresClubeSQLite com fallback seguro para Suspenso e Lesionado.
Corrigido o filtro de cobradores de pênaltis para aceitar IDs negativos de times importados via .ymt, removida a restrição desnecessária de goleiro obrigatoriamente na posição 1 da escalação e adicionada auto-recuperação/fallback de estádio e técnico no banco SQLite da competição, eliminando falsos positivos na auditoria de integridade.
Adicionado verificador direto no banco de dados SQLite da competição (.db3) na tela de escolha de times. Permite verificar tanto equipes importadas via arquivo .ymt quanto sincronizadas do portal, validando elenco mínimo/máximo, 11 titulares, técnico, capitão, batedores de pênalti, goleiros, idade limite e estádio com clima cadastrado, prevenindo falhas na simulação de partidas.
Corrigido o dimensionamento dos seletores de categoria de amistosos, impedindo a sobreposição de estilos globais legados de botões e garantindo o alinhamento inline horizontal e tamanho compacto automático de cada pill.
Corrigida uma falha de sintaxe JavaScript no fechamento do handler assíncrono de sincronização que impedia a execução do carregamento inicial da tabela de vagas e times da competição.
Corrigida a perda de sessão que ocorria ao fechar o navegador. Removido o descarte prematuro e indevido de sessões por abort durante o encerramento da requisição, garantida a emissão e renovação contínua do cookie de sessão com expiração persistente de 30 dias (SameSite Lax e detecção aprimorada de HTTPS/proxies) tanto no login padrão quanto na impersonação, mantendo o usuário conectado continuamente.
Adicionada nova tela dedicada para geração e simulação de amistosos avulsos entre seleções nacionais com suporte a categorias (Principal, Sub-20, Sub-18 e Olímpica), histórico de confrontos (head-to-head), opção de envio direto para o CONFUSA Live e respeito estrito ao Sigilo Temporal, revelando o placar, súmula e cômputo no ranking apenas após o término da partida no tempo real.
Adicionada autocriação e fallback seguro para a coluna tipo_times em jogos_clube caso a tabela ainda não a possua no banco de produção. Corrigidos também avisos de chave indefinida idPais em selecoesdopais.php e tratamento de valores nulos passados para strip_tags em time.php.
Tratamento de valores nulos passados para htmlspecialchars nos blocos de próximo confronto e partidas recentes na página de apresentação magazine do clube, evitando avisos de depreciação do PHP 8.1+.
Corrigido erro na exportação de seleções e clubes (.ymt) que deixava as equipes sem escudo no simulador Hexacolor. Foi adicionada a conversão automática de imagens WebP para PNG em base64 garantindo compatibilidade com o leitor Java do simulador, bem como fallback automático para a bandeira do país caso a seleção não possua escudo próprio cadastrado.
Adicionado botão individual em cada vaga e botão no topo da página de seleção de times de competições para verificar a integridade técnica das equipes (quantidade no elenco, capitão, cobradores de faltas/pênaltis, goleiros, 11 titulares, limite de idade, técnico único e estádio/clima), exibindo relatório detalhado com checklist de aprovação ou listagem de pendências a corrigir.
Corrigido o avanço automático de fases em competições de mata-mata, filtrando estritamente pelo identificador do simulador interno (simulador_interno = 1) para que confrontos históricos ou de edições anteriores não bloqueiem indevidamente a criação das fases seguintes. Corrigida também a consulta de árbitros e a auto-resolução de nomes das equipes classificadas.
Corrigido o cálculo de equipes com avanço direto (BYE) na tela de lista de jogos de mata-mata, restringindo a verificação estritamente aos times inscritos na competição. Eliminada a iteração global sobre o cadastro geral de clubes que gerava centenas de páginas e partidas fictícias com equipes de fora do torneio.
Adicionado seletor nas opções de competições para definir se o torneio é disputado por Clubes ou Seleções Nacionais, com escolha do campeonato correspondente no Ranking Oficial. Partidas de competições de seleções passam a ser registradas automaticamente no ranking apenas após o término do horário real da partida (respeitando o sigilo temporal) e deixam de constar nas estatísticas e listagens de jogos de clubes.
Corrigidas falhas na simulação automática e manual de partidas de times importados via .ymt. Resolvido o erro de estádio não definido com auto-resolução do estádio no SQLite da competição e suporte a IDs negativos, o erro de ArrayIndexOutOfBoundsException em Escalacao e o NullPointerException em ModeloPartida.criacaoJogada causado pela ausência de execução no cadastro SQLite do técnico (Tecnico::createSqlite), garantindo a criação e validação automática de técnicos, mentalidades, estilos e atributos no SQLite antes da simulação.
Corrigida a prioridade de resolução dos escudos na tabela de classificação, lista de rodadas e detalhes de partidas do PoltronaScore, garantindo que o banco de dados principal do portal (MariaDB) prevaleça sobre caches temporários de simulação da engine Java, restaurando os escudos WebP e oficiais de equipes como da Superliga Orionesa.
Corrigida a exibição de equipes externas importadas via .ymt (IDs negativos) e placeholders de partidas pendentes no PoltronaScore, integrando a classificação, detalhes de partidas e elencos ao banco de dados SQLite da competição.
Restrita a alteração e exclusão de transferências históricas na tela do jogador a clubes pertencentes ao próprio usuário ou agentes livres, reservando a administradores qualquer operação que envolva clubes de outros participantes.
Corrigido o mecanismo de persistência de sessão para descartar automaticamente sessões de 0 bytes de visitantes e robôs, remover a recriação forçada de session_id sob concorrência e padronizar o nome de cookie nas APIs, eliminando o acúmulo desnecessário de arquivos no servidor.
Centralizado o disparo de notificações de transferências no Discord para acionar tanto em propostas aceitas quanto em transferências diretas entre clubes. Adicionado filtro para ignorar agentes livres e movimentações entre equipes de um mesmo usuário, além de proteção com timeout e logs de diagnósticos.
Corrigida a renderização do atributo src das imagens de escudos na página de transferências, evitando o truncamento do link causado por aspas simples quando o arquivo do escudo possui apóstrofo (').
Corrigida a tela de escalação pré-jogo (escalacao_jogo.php) para carregar os atletas e posições táticas prioritariamente do banco SQLite da competição, viabilizando a exibição e seleção de atletas de equipes temporárias importadas via .ymt (com IDs negativos) e mantendo o fallback no MariaDB para clubes do portal.
Adicionado operador de coalescência nula nos parâmetros POST de verificar_exportacao.php (como codigo_sede, codigo_federacao e codigo_genero), evitando avisos de chave indefinida (Undefined array key) no PHP 8+.
Removida a geração artificial de templates que causava placeholders espúrios e garantida a preservação e associação estrita dos slots reais (como time externo em A3 e placeholders originais como B1) em jogos de competições.
Corrigida a consulta de lesionados e suspensos na tela de estatísticas da competição (estatisticas.php) para restringir a exibição exclusivamente aos atletas dos times participantes da competição (incluindo elencos de times temporários importados via YMT com IDs negativos), consultando tanto o histórico do MySQL quanto o status de lesão direto no SQLite da competição.
Corrigida a identificação e sincronização de times temporários importados via arquivo YMT (que possuem IDs negativos no banco da competição), garantindo a exibição correta dos nomes dos clubes, botões de escalação e simulação na tela de partidas, e a contabilização precisa de tabelas de classificação, artilharia, assistências e chaves de mata-mata na tela de estatísticas.
Corrigido o tratamento de arrays na vinculação e sincronização de times em competições e exportações SQLite, garantindo o preenchimento de todos os 23 jogadores, técnico, 11 titulares, capitão e cobradores de pênaltis com valores padrão para evitar avisos de chave indefinida (Undefined array key) quando o clube tiver dados incompletos.
Adicionada tipagem e conversão segura para string ao sanitizar identificadores de partidas em competicao_clube.php, evitando mensagens de depreciação ao passar valores nulos para strip_tags().
Adicionada validação completa e conferência prévia das regras de elenco (técnico, capitão, cobradores de pênaltis, titulares e limites de idade) ao submeter times pela tela de Envio de Fichas e no backend de vinculação à competição.
Disponibilizado botão administrativo 'Sync' na lista de times da competição (inclusive para administradores impersonando) para permitir ressincronizar individualmente o elenco, comissão técnica, escalação e atributos diretamente do portal para o banco SQLite da competição.
A tela do time (teamstatus.php) agora lista todos os técnicos associados à equipe e exibe um alerta em destaque quando houver mais de um técnico vinculado simultaneamente, permitindo desconvocar ou demitir os excedentes diretamente no painel. Além disso, as rotinas de conferência passam a detalhar a contagem exata de duplicidade.
Implementada decodificação completa de entidades HTML e caracteres de escape em nomes de jogadores e clubes nas tabelas de artilharia, assistências, suspensões, pendurados e departamento médico, além de prevenir a gravação indevida de entidades nos métodos de cadastro e edição de atletas.
Removidos os estilos de zonas e rebaixamento padrão forçados que eram atribuídos automaticamente em tabelas de pontos corridos e grupos, exibindo agora exclusivamente as faixas e cores que forem configuradas nas opções da competição.
Corrigida a consulta aos clubes no banco de dados principal nas páginas de estatísticas, soma de tabelas e exportação da competição, garantindo que escudos, siglas e nomes reais cadastrados no portal sobrescrevam os caminhos locais do SQLite e não gerem erros 404.
Corrigido o aninhamento de divs na tela ao vivo do Octamotor restaurando a tabela de classificação lado a lado na metade direita da tela, posicionado o botão de alternar visualização de forma limpa junto aos controles sem sobrepor o badge 'AO VIVO', e adicionado padding perimetral com seleção por área no vetorizador para contornar perfeitamente o traçado em pistas que tocam as bordas da imagem como Bombin.
Criado painel lateral deslizante (Drawer) em tela cheia na tela da Seleção Nacional para convocar e desconvocar atletas com 1 clique, busca em tempo real, filtros por posição (Goleiros, Defensores, Meio-campo, Atacantes e Convocados), exibição de clube atual, nível e proteção contra flickering de imagens com sincronização instantânea do elenco.
Ajustado o radar de pista do Octamotor para manter os carros estacionados no grid antes da largada (sem voltas antes do sinal verde), implementado modelo de pelotão com distâncias e gaps reais (líder sempre na frente puxando o ritmo da prova), e adicionada resolução inteligente de nomes de autódromos para carregar perfeitamente o traçado em qualquer corrida de campeonato.
Implementado o radar de pista em tempo real na tela de corrida ao vivo que vetoriza automaticamente os traçados a partir dos PNGs das pistas e renderiza os carros correndo pelo circuito a 60 FPS com números, cores das equipes, destaque de líder, Safety Car, tooltips informativos e sincronização ao passar o mouse na tabela de classificação.
Restaurada e reforçada a validação de no máximo 12 jogadores no banco de reservas tanto nos botões de ação rápida quanto na troca manual e na validação do backend.
Corrigido o seletor do modal de convocação na busca de jogadores para selecionar automaticamente a primeira seleção compatível e válida (país, sexo e idade), evitando que seleções anteriores ou de outras categorias permaneçam selecionadas.
Alinhadas todas as opções de estilo/condição climática às regras oficiais do motor Hexacolor com base na temperatura (Muito Frio, Frio, Normal, Quente e Muito Quente) na Criação de Clima, no painel de Meus Climas e no modal de criação rápida.
Adicionada opção e modal integrado para cadastrar novos climas e definir o comportamento sazonal das estações diretamente a partir do modal de Novo Estádio, com atualização instantânea do seletor.
Reformulação visual moderna dos modais com backdrop com desfoque, tipografia em Outfit, cards interativos para Altitude/Caldeirão e bloco sazonal com ícones temáticos para as quatro estações.
Adicionado botão e modal para cadastrar novos estádios diretamente na tela de Criação de Time via AJAX, selecionando o novo estádio automaticamente sem sair da página.
Adicionados campos de texto para inserção direta de códigos hexadecimais ao lado dos seletores de cor dos uniformes titular e reserva, com sincronização bidirecional em tempo real.
Ajustada a altura e alinhamento vertical do card de bandeiras (Safety Car, Chequered Flag) para que os textos fiquem perfeitamente centralizados e longe da borda inferior, além de corrigir o dimensionamento e posicionamento interno das luzes do semáforo de largada dentro do gantry.
Implementado módulo completo no painel administrativo para gerenciar o catálogo de origens culturais, cadastrar novas culturas, adicionar e editar primeiros nomes e sobrenomes com flags de gênero (M/F), importar listas em lote com higienização de marcadores e opção de detecção automática de gênero por sufixos eslavos/russos (ov/ova, ev/eva, in/ina, sky/skaya).
Adicionados controles modernos na tela de Meus Jogadores com seletor rápido de gênero (Todos, Masculino e Feminino) e dropdown de países, permitindo filtrar instantaneamente o elenco em tempo real.
Removida a limitação de 150 registros na listagem de Meus Jogadores com ativação de compressão de transferência e lazy loading de imagens, permitindo visualizar e ordenar todo o elenco completo sem lentidão.
Adicionada a página consolidada de transferências do usuário no Mercado com balanço financeiro unificado (total em vendas, compras e saldo líquido) e histórico completo de transações dos clubes e atletas nacionais no exterior.
Ajustado o painel de propostas de jogadores e técnicos para exibir apenas transferências reais entre clubes nas propostas concluídas, ocultando movimentações diretas de agentes livres/sem clube.
Corrigida a cor do ícone de TV nas etapas de competições do Octamotor que ficava preto sobre fundo escuro, adicionando botão com acabamento ciano neon, efeito hover e propagação de clique isolada para assistir à corrida.
Implementada a tela completa de estatísticas do Octamotor com filtros por categoria (FOCA, FOCA 2, ligas regionais e geral), Hall da Fama com maiores vencedores, títulos de temporadas de pilotos e construtores, pontos acumulados, taxa de confiabilidade/DNF e recordes de tempo por circuito.
Adicionado seletor de abas nas competições do Octamotor para alternar instantaneamente entre a Classificação de Pilotos e a Classificação de Equipes/Construtores tanto por temporada quanto por corrida individual.
Modernização visual com glassmorphism escuro refinado, realce dos botões com animação das rodas na home, badges de pódio em ouro/prata/bronze e tabelas modernas, preservando a essência e o fundo clássico automobilístico.
Permitida a edição do nome de jogadores que pertencem ao usuário mesmo quando contratados por clubes de outros proprietários, tanto na tela do time quanto na listagem de jogadores, preservando a trava de proteção nos demais atributos contratuais e técnicos do atleta.
Ajustado o filtro padrão da central de sugestões para exibir tanto itens pendentes quanto em processo (ocultando apenas completos e cancelados) com opção de alternar para visualizar todos os registros.
Permitido salvar e fixar dashboards de tabelas agrupadas (como Apertura + Clausura) com nome personalizado e badge destacada na listagem de competições do usuário, mantendo o cálculo dinâmico e acesso instantâneo com um clique.
Criada a página de soma de tabelas que permite selecionar duas competições para consolidar a classificação geral anual unificada, artilharia somada, líderes de assistências, cartões e médias ponderadas de notas dos jogadores.
Adicionado assistente na geração de tabelas para espelhar confrontos de outra competição invertendo automaticamente mandantes e visitantes e alocando estádios e árbitros de forma coerente.
Criado template HTML responsivo oficial do CONFUSA.top e padronizados todos os e-mails transacionais (propostas de jogadores e técnicos, boas-vindas a novos usuários, redefinição de senha, solicitações de cadastro e formulário de contato) com cabeçalho institucional, cards modernos, badges e botões de ação direta.
Corrigida a lógica de execução de estratégias de pit stop no simulador do Octamotor, eliminando o bloqueio antecipado nas voltas finais e permitindo paradas sob Safety Car e pista molhada, garantindo que todos os pilotos realizem suas paradas planejadas.
Ajustado o cálculo de voltas programadas e o encerramento por tempo limite na simulação de corridas do Octamotor, considerando o ritmo real de prova e interrompendo a prova com precisão para não ultrapassar a duração máxima definida pela competição.
Adicionado gerenciador visual nas opções da competição para definir faixas de classificação personalizadas com posições de início e fim, seletor de cores, legendas explicativas e presets rápidos (G4+Z4, Brasileirão, Libertadores). As cores e a legenda são exibidas automaticamente na tabela de estatísticas.
Corrigida a importação de múltiplos arquivos .jog para processamento direto em lote, permitindo enviar vários jogadores simultaneamente para o clube selecionado sem interrupções e restringindo o assistente de duplicatas exclusivamente para importação de times (.ymt).
Corrigido o contêiner e o posicionamento fixed dos modais de proposta de transferência e contratação de técnicos, garantindo que abram sempre centralizados no campo de visão atual da tela sem exigir rolagem da página.
Adicionada tolerância a micro-movimentos do dedo no toque longo (long press) e implementado suporte a duplo toque rápido (double-tap) nos marcadores de jogadores, facilitando a troca entre atacante avançado (Aa) e recuado (Am) em telas touch.
Configurado o charset UTF-8 e codificação base64 padrão na inicialização do PHPMailer, corrigindo a renderização de caracteres acentuados no assunto e corpo de todos os e-mails enviados pelo portal.
Criada uma ferramenta administrativa para monitorar a conectividade do servidor SMTP, inspecionar configurações de disparo e realizar envios de teste com simulação real de propostas e escudos de clubes.
Corrigida a codificação da URL dos escudos (utilizando rawurlencode e imagem HTTPS direta) nos e-mails de proposta de transferência de jogadores e técnicos, garantindo que clubes com nomes compostos ou com espaços sejam exibidos perfeitamente em todos os provedores de e-mail.
Corrigido o repasse da lista de clubes para o componente de busca (Select2) na tela de revisão de importação de jogos, permitindo buscar e mapear clubes não encontrados na súmula.
Filtradas transferências com 'Sem clube' para exibir apenas negociações reais entre clubes, e corrigido o alinhamento flex no mobile para evitar sobreposição entre o valor e seu rótulo.
Adicionada a coluna 'Data' na tabela de sugestões e bugs, exibindo quando cada solicitação foi registrada no sistema e permitindo ordenação cronológica.
Corrigida a lógica de montagem da sequência binária de posições e detecção de goleiro no formulário de criação de jogadores, garantindo que jogadores de linha sejam gravados com suas posições corretas em vez de serem atribuídos como goleiros.
Corrigida a captura do texto digitado na edição inline da tela de Minhas Ligas, garantindo que o novo nome da liga seja persistido corretamente no banco de dados e mantido após recarregar a página.
Ao atualizar o status de uma sugestão ou bug, o administrador agora pode disparar automaticamente um e-mail de notificação para o originador com detalhes da solicitação e incluir uma mensagem personalizada.
Adicionada a coluna 'Usuário' na tabela da central de sugestões e bugs, exibindo quem cadastrou cada item e permitindo a ordenação e busca por autor.
As telas de gerenciamento (Meus Clubes, Jogadores, Técnicos, Estádios, Climas, Países, Minhas Ligas e Parâmetros) agora realizam a gravação inline via AJAX preservando a paginação e a posição da tela. Ao colocar mais de uma linha em edição, uma barra flutuante 'Aceitar todos' permite salvar ou cancelar todas as alterações simultaneamente.
Corrigido o comportamento ao clicar para editar o nome do técnico na tela de Meus Técnicos e na página do Clube, desabilitando o redirecionamento pelo link para permitir a alteração do texto diretamente.
Ajustada a exibição nas listagens do Mercado de Transferências para que atletas que estejam como suplentes em seus clubes exibam sua posição natural de ofício (ex: Goleiro, Zagueiro, etc.) em vez do texto 'Suplente'.
Adicionado botão de ação para administradores recalcularem instantaneamente o passe e o salário de um atleta específico na listagem de Jogadores mais Valiosos, aplicando os parâmetros personalizados e atualizando a interface em tempo real via AJAX.
Adicionada a opção para administradores alterarem diretamente na listagem de Jogadores mais Valiosos (/mercado/transferencias.php?type=jogadores) o valor de mercado de cada atleta com salvamento imediato via AJAX.
Ajustada a consulta da lista de jogadores mais valiosos para considerar apenas vínculos de clubes profissionais regulares, impedindo que convocações para seleções nacionais sobrescrevessem o clube ou duplicassem atletas na lista.
Criado novo card e painel de configuração na Minha Área para personalização detalhada dos parâmetros da fórmula de mercado (percentual de salário mensal, multiplicadores de idade, bônus de falta, pesos por setor/posição, polivalência e faixas de nível), com simulador interativo em tempo real e ferramenta de recálculo em massa de passes e salários dos atletas dos clubes do usuário.
Corrigida a lógica de herança de fotos durante a fusão de atletas para reconhecer e priorizar fotos personalizadas em relação aos avatares padrão do sistema, além de incluir controle visual para escolha de qual foto manter diretamente na tela de merge.
Corrigido o mapeamento de tabelas e colunas no importador de arquivos .db3 para ler atributos, posições e dados de goleiros/jogadores com tolerância a maiúsculas/minúsculas, além de distribuir atributos e calcular passes realistas automaticamente quando ausentes na base de origem.
Ajustada a lista de seleção de nacionalidade na tela de Meus Jogadores para exibir o nome completo do país em vez da sigla.
Corrigida a ordenação de todas as colunas da tabela de jogadores (nome, data de nascimento, mentalidade, cobrança de falta, valor, posições, nível, país, clube e status), com alternância ascendente/descendente e indicação visual das setas.
Corrigida a gravação do clube de vínculo na transferência e importação de jogadores para que contratações definitivas não sejam identificadas incorretamente como empréstimos.
Criada uma tela administrativa com abas para comparar atletas lado a lado, detector automático de possíveis duplicatas (por similaridade de nome e fonética Soundex), histórico de auditoria de merges e fusão com migração automática de contratos, partidas, eventos, gols e transferências.
Corrigida a identificação e posicionamento dos eventos de partida na timeline do PoltronaScore, garantindo que gols e cartões do time mandante apareçam corretamente no lado esquerdo e os do time visitante no lado direito.
Corrigido o cálculo de índices da paginação para garantir que o último clube da lista seja renderizado corretamente em todas as páginas.
Adicionada a identificação explícita de categoria ([M] para masculino e [F] para feminino) nos menus de seleção de clubes de destino ao realizar propostas para técnicos e jogadores, e liberada a contratação de técnicos/técnicas para qualquer categoria de equipe.
Corrigida a validação de permissão de dono de país na listagem de seleções e árbitros, normalizando a comparação de tipos de dados para garantir que os botões de edição e download do arquivo .ymt sejam exibidos corretamente aos donos.
Ajustada a exibição e criação de mascotes para que times sem mascote cadastrado exibam corretamente o placeholder padrão em vez de tentar carregar '0.png'.
Criada ferramenta dedicada na Área do Administrador para geração e download de backups completos ou estruturais do banco MySQL em arquivos .sql ou compactados .sql.gz via streaming seguro, com operação 100% em modo leitura.
Implementado algoritmo de resolução automática de colisões na exportação de banco .db3: caso o ID local do MySQL de um registro sem externalID coincida com o externalID de outra entidade, o sistema realoca dinamicamente um identificador seguro e exclusivo, preservando a integridade de todas as relações de elenco e escalação.
Padronizada a exibição de estatísticas e o processamento de atualização de técnicos e estádios no importador DB3, garantindo que registros já existentes sejam devidamente atualizados e discriminados como 'atualizados' na prévia e no relatório final.
Adicionada opção na tela de exportação de database YMT para utilizar os IDs externos originais em clubes, jogadores, técnicos, estádios e climas, preservando as chaves e integridade referencial de elencos e escalações.
Corrigido o processamento de importação de bases SQLite (.db3) para cadastrar e sincronizar todos os técnicos da base (inclusive os que estão sem clube ou fora de elencos), evitando que apareçam como 'novos' em conferências subsequentes.
Criada interface de controle de acesso no painel do administrador para concessão ou revogação individual da permissão de importação de bancos SQLite (.db3) para cada usuário cadastrado, com alternância instantânea.
A ferramenta de importação e sincronização de arquivos .db3 foi integrada à Minha Área para usuários autorizados, restringindo a seleção e o processamento exclusivamente aos países sob administração do usuário logado.
Na importação de SQLite (.db3), atletas do país importado que já estejam jogando em clubes de outros usuários não são transferidos compulsoriamente; em vez disso, o sistema acessa o jogador e gera automaticamente uma proposta formal de transferência com o comentário '-- proposta automatica --'.
Adicionada validação de existência de arquivo e checagem de parâmetros vazios antes da leitura de dados da corrida, prevenindo avisos de leitura em diretório e acesso a índice nulo.
Ajustada a conferência prévia para identificar atletas de seleções nacionais que já pertencem a clubes do arquivo .db3 ou do banco de dados (via externalID e nome), exibindo-os corretamente como 'Convocado' com o nome do clube de origem em vez de sugerir 'Criar Novo' duplicado.
Implementada a identificação automática de Seleções Nacionais (Principal, Olímpica/Sub-21, Sub-20 e Sub-18) na importação de bancos SQLite (.db3), preservando simultaneamente os contratos profissionais dos atletas em seus clubes locais (tipoContrato = status) e a vinculação correta de técnicos de seleções.
Removida a restrição legada de unicidade de sigla (TresLetras) no banco de dados e no cadastro de clubes, permitindo que seleções de base e clubes compartilhem a mesma sigla de 3 letras exatamente como definido na base de origem.
Implementado pré-carregamento em memória (hashmaps O(1)) e correção de campos nas consultas de técnicos e atletas, acelerando a conferência prévia e importação de bancos .db3 de mais de 120s para menos de 1s e prevenindo erro HTTP 500.
Corrigido o background das telas de Importação de Bancos SQLite (.db3) e Criação de Times para aplicar com precisão o gradiente suave do Tema Claro sem interferência do tema escuro ou marcas d'água legadas.
Corrigido o aviso PHP de chave indefinida 'origemNomes' e 'origemSobrenomes' na geração de jogadores e técnicos pelo Hexagen, adicionando verificação de existência e fallback automático para sorteio demográfico.
Atualizadas as metas de conquistas: 'Chuva de gols' para 700 gols na carreira, 'O\'Harrison' para 70 gols pela seleção nacional e 'Incansável' para 1100 jogos oficiais na carreira.
Ajustado o gatilho da conquista 'Com moral' para ser concedida exclusivamente ao término da carreira (aposentadoria), garantindo que o atleta tenha mantido o histórico 100% fair play até o fim.
Garantido que as buscas de correspondência e sugestões de vinculação de clubes, jogadores e técnicos durante a importação respeitem estritamente o gênero selecionado na entrada (masculino ou feminino), impedindo comparações cruzadas indevidas entre categorias distintas.
Adicionada a opção de incluir imagens personalizadas de troféus para Ligas, Copas e Competições no momento da criação ou edição, com processamento e otimização automática em WebP mantendo canal alfa e transparência, e exibição nas listagens e painéis principais.
Implementada a simulação das copas continentais secundárias e terciárias de clubes: Taça Nery Pumpido (FEASCO), Taça Trifon Ivanov (FEMIFUS), Taça LID (COMPACTA) e Taça Andy Selva (FEMIFUS), mantendo a validação estrita de 1º nível para as conquistas. Corrigido também o torneio continental de seleções da COMPACTA para Escudo da Távola.
Separadas as visualizações das abas 'Minhas Carreiras' e 'Hall da Fama' em telas independentes e corrigido o carregamento de detalhes de carreiras salvas com auto-criação da tabela e junção correta de usuários.
Implementada galeria completa de 23 conquistas temáticas baseadas na história e desafios do universo CONFUSA, com notificações de desbloqueio em tempo real, progresso salvo no perfil e exibição no resumo final da carreira.
Disponibilizada ferramenta administrativa para importar arquivos .db3 completos de países, com tela de conferência prévia interativa e otimizada para inspecionar clubes, elencos, funções e escalações antes de sincronizar no banco com externalID e filtro de gênero.
Corrigido aviso de acesso a offset de array em booleano (fetch retornando false) nas consultas de permissão, posições e atributos de jogadores e técnicos.
Implementado sistema de fallback inteligente para diferenciar equipes masculinas e femininas em jogos raspados: ao cruzar os primeiros nomes de atletas e autores de eventos com a base demográfica gen_nomes, o sistema infere o gênero da partida e prioriza a versão correta do clube (masculina ou feminina) mesmo com nomes idênticos.
Corrigido erro SQL que impedia o funcionamento da aba de favoritos para clubes e partidas no PoltronaScore, unificando a busca de confrontos entre a base de jogos externos (poltrona_matches) e o simulador interno (jogos_clube), além de corrigir junções de rodadas e tabelas de competições.
Ajustada a resolução de nomes de clubes, atletas e competições no PoltronaScore e na API de busca, garantindo que termos idênticos (correspondência 100% exata) tenham prioridade máxima sobre termos semelhantes ou parciais antes de aplicar LIMIT 1.
Implementada camada prévia de sanitização no PHP para normalizar posições táticas, balancear setores da escalação (defesa, meio e ataque) e substituir previamente desfalques nos titulares antes do envio à engine Java, além de adicionar mecanismo automático de retry com formação padrão de emergência caso a simulação falhe por falta de marcadores válidos.
Corrigida a identificação da competição nas partidas e histórico recente de atletas e clubes no PoltronaScore, aplicando a lógica condicional unificada da tabela jogos_clube para diferenciar torneios simulados internamente (competicao_lista) de ligas e copas legadas (liga e campeonatos_clube).
Adicionada a funcionalidade de exclusão de competições no índice e no painel da competição, disponível para o criador e administradores. A exclusão é bloqueada caso a competição já possua jogos simulados ou finalizados, e realiza a limpeza completa e segura em cascata (confrontos pendentes, regulamento, times vinculados, banco SQLite e arquivos de imagem).
Corrigido erro no cron que causava 'image == null' na engine Java ao simular competições com escudos em formato WEBP. O simulador agora converte automaticamente imagens WEBP para PNG em cache e assegura o fallback de placeholder para arquivos ausentes ou corrompidos sem travar a simulação.
Corrigido erro que derrubava o cron de simulação ao tentar gravar dois eventos com o mesmo minuto e tempo na tabela jogos_clube_eventos (violação da unique key 'eventoUnico'). O INSERT agora usa INSERT IGNORE, tolerando colisões sem interromper o processamento das demais partidas.
Os campos de data em competições agora bloqueiam qualquer data anterior a 01/01 do ano corrente, tanto ao criar um novo jogo quanto ao editar um existente inline na tabela, evitando agendamentos em anos passados.
Adicionado card de estatística no painel de Cron de Simulação (/admin/cron_logs.php) mostrando o tamanho total em disco e a contagem de arquivos de súmulas (.hyl e outros) da pasta hexacolor/Partidas.
Implementada verificação e fallback inteligente de escudos e uniformes dos clubes no SQLite antes da execução do motor Java (Hexacolor), evitando exceções de imagem nula e garantindo liberação segura de locks e conexões do SQLite entre partidas consecutivas.
Ajustada a exibição das listas de jogadores titulares e reservas abaixo do campinho tático: em telas mobile as listas passam a se organizar verticalmente (uma equipe abaixo da outra), evitando qualquer corte ou estouro horizontal e tornando a leitura dos atletas e notas fluida.
Otimizada a exibição do valor de mercado total do elenco nos cards de estatísticas do clube, utilizando formato compacto e abreviado (ex: $ 12.5M, $ 850k) em dispositivos móveis para evitar estouro visual e manter o layout limpo.
Ajustada a tipografia e o dimensionamento dos cards de partidas no PoltronaScore com quebra de linha fluida (text wrap) e limite de duas linhas com reticências para nomes extensos de times, impedindo estouro horizontal no mobile.
Resolvida a falha de leitura de escudos padrões no motor Java em ambiente Linux (case-sensitivity em pastas de imagens) e implementado flush atômico de checkpoints WAL para prevenir erros de I/O em bancos SQLite durante simulações contínuas.
Ajustado o cálculo de desfalques por lesão no pós-jogo para usar a data da partida como base temporal em vez de CURDATE(), garantindo suporte e recuperação fidedigna em competições retroativas e regulares.
Criada tela administrativa dedicada (/admin/cron_logs.php) para acompanhar em tempo real as execuções do agendador, inspecionar logs de terminal e da engine Java, analisar partidas pendentes e disparar simulações manuais sob demanda.
Implementada a funcionalidade de Favoritos no PoltronaScore no estilo SofaScore: salve partidas, clubes, ligas e jogadores com um toque na estrela. Inclui arquitetura híbrida de persistência local e sincronização automática em nuvem no banco de dados para usuários autenticados, além de aba dedicada com agenda unificada de partidas.
Calibrada a escala visual das barras de atributos dos atletas (máximo 10 para goleiros, máximo 7 para habilidades técnicas de jogadores de linha e máximo 5 para força e velocidade), exibindo a pontuação relativa de forma fidedigna.
Implementado log autônomo com registro de disparos, runtime do PHP e saídas detalhadas do motor de simulação no cron_simular_jogos.php para diagnóstico transparente de execuções agendadas.
Ajustada a exibição de atributos no perfil do jogador: lançamentos foi movido para o grupo de goleiro, atributos técnicos agora só aparecem para jogadores de linha, mentalidade passou a ser exibida como tipo/personalidade (ex: Líder, Sangue Frio) e determinação foi removida.
Adicionada exibição das notas de desempenho dos jogadores no campinho tático e nas escalações do Match Center (a partir dos dados de partida .hyj), bem como a média geral de notas e as avaliações individuais nas últimas partidas dentro do perfil do atleta.
Corrigido o empilhamento de camadas (z-index dinâmico) para garantir que o perfil do atleta sempre abra à frente do modal do clube (e vice-versa), e ajustado o overflow da foto do jogador para que o balão de nível não seja cortado.
Ajustada a verificação de integridade de clubes para ignorar movimentações de/para sem clube (origem ou destino zerados), permitindo que contratações livres e dispensas não bloqueiem a exclusão do time.
Criado modal de perfil do atleta com bio, atributos técnicos, físicos e mentais em barras progressivas com cores por nível, clube atual, estatísticas de carreira e histórico das últimas partidas disputadas.
Adicionado campinho tático 2D interativo no Match Center com demarcações reais de gramado, posicionamento dinâmico por esquema tático das equipes, nós dos atletas com número e nível, e listas completas de titulares e banco de reservas.
Criado modal de perfil do clube exibindo dados de estádio e capacidade, métricas de elenco (média de idade, nível médio e valor de mercado), elenco completo agrupado por setores e calendário de partidas anteriores e futuros confrontos.
Corrigido erro na verificação de competições (tabela competicao_times) ao apagar clube e ajuste na contagem de parâmetros SQL do técnico, garantindo retorno JSON limpo em ambas as operações.
Restaurado o modal centralizado de decisões no Topero para visualização imediata e direta de dilemas e transferências sem necessidade de rolagens na tela.
Adicionados momentos decisivos ultra-raros e bem-humorados no Topero, incluindo a chance de herdar o trono real do Khemed, chamado do Planeta Cúbico de Mali pela confederação espacial COMETA e fortuna repentina em ToperoCoin, com troféus exclusivos e aposentadoria especial.
Adicionado botão de exclusão permanente de técnico no painel do time (teamstatus.php) para administradores impersonados, com validação de contratos e transferências exclusivas.
Implementada a funcionalidade de exclusão permanente de clubes para administradores impersonados, protegida por verificações rigorosas de integridade (partidas jogadas, competições, histórico de transferências, finanças e contratos de terceiros).
Implementada a dinâmica de promoção e rebaixamento no modo carreira do Topero: vencer uma divisão de acesso garante a subida para a divisão imediatamente superior no ano seguinte, enquanto campanhas abaixo do esperado na elite resultam em rebaixamento para a divisão inferior.
Corrigida a validação de exclusão de jogador para considerar apenas transferências efetivamente executadas (status_execucao = 1), permitindo que jogadores com histórico de propostas recusadas ou canceladas possam ser apagados normalmente.
Adicionado botão de apagar jogador no elenco do time (teamstatus.php) para administradores em modo impersonado, com validação estrita de segurança para permitir exclusão somente se o atleta possuir histórico e contrato exclusivos com o clube atual.
Corrigida a dessincronização do gênero na importação de times e jogadores, garantindo a atualização correta da coluna Sexo no banco de dados, alinhamento automático com a liga selecionada e leitura consistente em listagens.
Corrigido erro PDO::prepare() na recuperação de cores, uniformes, jogadores e estádios na súmula de partidas, adicionando verificação de existência da base SQLite e tratamento de falhas com fallbacks seguros em Competicao_clube.
Ajustada a listagem e pesquisa da tela de competições para exibir exclusivamente as competições criadas e pertencentes ao usuário logado.
Corrigido erro SQLSTATE[HY093] na verificação de atividade de clubes ao consultar partidas pendentes e histórico de jogos, garantindo identificadores únicos de parâmetros no prepared statement do PDO.
Disponibilizada ferramenta administrativa para importar arquivos .db3 completos de países, sincronizando times, atletas, elencos e escalações com persistência do externalID e suporte a filtro de gênero.
Limitado o envio de times a 1 arquivo por vez para todos os usuários e liberada a tela de revisão e associação para usuários comuns, com isolamento estrito de país para evitar vinculações indevidas.
Corrigida a geração de tabela em competições mistas para respeitar a configuração de turnos da fase de grupos, gerando corretamente as rodadas de ida e volta com inversão de mandos e estádios de cada equipe.
Normalizada a string de posições dos jogadores (StringPosicoes) com preenchimento seguro de 15 caracteres na exportação de bases SQLite, pacotes e vinculação de clubes, prevenindo avisos de offset não inicializado e falhas na gravação.
Adicionado relacionamento dinâmico com a tabela de estádios e mandos de campo de clubes nos endpoints de jogos e classificação, garantindo que o nome do estádio seja exibido em todas as partidas e detalhes de competições.
Padronizada a ordenação cronológica decrescente dos lances de jogo (mais recentes no topo e primeiros minutos na base) tanto para os jogos ao vivo/anteriores da tela principal do scraper quanto para as partidas de competições simuladas.
Ajustado o reconhecimento de etapas de grupos em campeonatos com múltiplos formatos, garantindo que as tabelas de classificação de grupos e pontos corridos sejam sempre exibidas sem serem ocultadas erroneamente pela mensagem de mata-mata.
Redesenhada a linha do tempo de lances do PoltronaScore no estilo SofaScore, com eventos em ordem cronológica decrescente (mais recentes no topo), separados pelos lados das equipes (mandante à esquerda, visitante à direita, minuto centralizado) e cartões em blocos sólidos preenchidos na cor correspondente.
Corrigida a alternância automática para a visualização de Grupos ao selecionar competições mistas e de fase de grupos, garantindo que o chaveamento de mata-mata não sobrescreva as tabelas de classificação.
Adicionado painel visual dedicado na súmula da partida com sequência de acertos e erros (bolinhas verdes e vermelhas com checks e Xs) e tabela detalhada das cobranças individuais por atleta com link para o perfil.
Adicionada visualização de Chave de Mata-Mata em copas e competições eliminatórias com identificação de vencedores, placares com pênaltis e integração completa do modal de detalhes com os jogos de competições.
Corrigido o mapeamento de tabelas no MySQL (tabela clube e competicao_lista) nos endpoints de competições e classificação do PoltronaScore, eliminando dependências externas e falhas de carregamento.
Implementada a expansão estilo SofaScore no PoltronaScore com Bottom Navigation Bar, visualização dinâmica de Tabelas de Classificação (pontos, vitórias, saldo, aproveitamento e forma recente) e listagem de competições e rodadas.
Adicionado botão e funcionalidade para exportar todos os dados da competição diretamente para uma planilha Excel multiabas estruturada contendo Classificação, Jogos, Artilharia, Assistências, Cartões e DM/Suspensões.
Ajustado o processamento e exibição de eventos de partidas para garantir que as cobranças em disputas de pênaltis pós-jogo não sejam computadas como gols regulares do tempo normal/prorrogação, exibindo o placar de pênaltis separadamente na súmula e detalhes do jogo.
Corrigido erro de sintaxe SQL na verificação e migração de schema da tabela de opções e log de alterações de competição em conexões SQLite e MySQL.
Corrigido erro de parâmetro PDO (bindParam) ao atualizar partidas com clubes indefinidos/zerados na edição de jogos.
Corrigido o tratamento de ambiente para o cron de simulação (compatibilidade com CLI/CGI da hospedagem), adicionado sigilo temporal em estatísticas de jogadores (gols e cartões), corrigida a exibição do nome da competição no visualizador de partidas e restaurado o preenchimento de nomes de atletas nas escalações.
Corrigido erro de sintaxe (Parse error) no arquivo de criação de ligas que causava erro HTTP 500 no carregamento da página.
Padronizada a resolução de caminhos absolutos e inclusão de dependências em login_info.php e conexão de banco de dados, prevenindo falhas de inicialização de classes em páginas do sistema.
Unificada a gravação de eventos minuto a minuto (gols, cartões amarelos e vermelhos) na tabela jogos_clube_eventos durante simulações automáticas via leitura das súmulas .hyl.
Corrigido o relacionamento de competições (competicao_lista) na listagem geral de jogos e ajustada a formatação de placares para jogos futuros ou sob sigilo temporal, eliminando a exibição de 'null'.
Implementada a busca e recuperação automática de nomes e posições de atletas a partir da base SQLite da competição e do arquivo .hyl no visualizador de partidas, garantindo exibição completa das escalações mesmo em partidas anteriores.
A lista de seleção de clubes no Time Traveler agora identifica automaticamente clubes com nomes idênticos e exibe a indicação [Masculino] ou [Feminino], facilitando a escolha correta da equipe.
O módulo de Competições foi disponibilizado na tela inicial, permitindo criar, estruturar formatos, gerenciar partidas e simular torneios completos.
Corrigidos avisos de parâmetros nulos em strip_tags nos objetos de usuários e parâmetros, e adicionada validação de sessão ativa na exportação de database.
Adicionado suporte a links de referência externa para técnicos na tela Meus Técnicos, permitindo vincular e consultar links diretamente pela listagem.
Corrigido o nome da coluna de relacionamento com clubes na consulta SQL que contabiliza as janelas abertas de alteração de elenco em Minha Área.
Corrigido erro de chave indefinida ao salvar novos goleiros, garantindo o envio e persistência corretos dos atributos de visão de jogo, velocidade e força.
Os elencos dos clubes na tela de Alterações de Elenco agora iniciam recolhidos em formato accordion clicável para melhor organização visual, e as desinscrições agora contam com modal popup estilizado de confirmação antes de efetivar a ação.
Ajustada a exibição das opções de alteração de elenco e listagem em Minha Área para restringir essa dinâmica exclusivamente a competições internacionais.
Atualizada a tela de Alterações de Elenco para listar todas as competições dos clubes do usuário. As desinscrições (remoções) são livres a qualquer momento, preservam o histórico e estatísticas do atleta no torneio e bloqueiam sua re-inscrição posterior na mesma competição.
Criado novo card e painel dedicado em Minha Área para gerenciar substituições, inclusões de atletas em vagas abertas e remoções de elenco durante janelas ativas de transferências nas competições.
Adicionada opção nas regras de Cartões & Suspensões da competição para definir o destino dos amarelos em expulsões por duplo amarelo no mesmo jogo: descartar ambos os cartões (padrão), contabilizar 1 amarelo ou contabilizar ambos no acumulado individual do atleta.
Implementada troca automática inteligente (swap) entre os 4 critérios de desempate da fase de grupos para evitar que o usuário selecione regras repetidas acidentalmente.
Reorganizada a seção de Alterações de Elenco com a flag de permissão no topo (ocultando datas e quantidade quando inativa) e validações estritas de datas que impedem início antes do início da competição ou término anterior ao início das trocas.
Adicionada a escolha de formato de jogos (Apenas Ida ou Ida e Volta) para grupos e mata-mata em torneios mistos e eliminatórios, posicionamento da 'Final em jogo único' no formato, reorganização da seção 'Regras de Desempate' e validação dinâmica para impedir que o número de vagas dos grupos exceda o total de times.
Expandido o limite de participantes das competições para entre 2 e 128 times, com criação e suporte completo à fase 64-avos-de-final no chaveamento automático de mata-mata e no simulador.
Corrigida a validação de formulário nas opções da competição para não resetar nem bloquear a digitação intermediária de valores (ex: digitar 16 sem travar no 1).
Adicionada a personalização completa do simulador Hexacolor nas opções da competição: escolha de Balizamento (Tradicional ou Internacional 2022 com descrição de comportamento), substituições e paradas, prorrogação, VAR, limite de lesões, cores do simulador e sliders de frequências de gols, faltas, impedimentos, cartões, estilo de jogo e bandeiras.
Ajustado o título da página para o padrão com emoji ('➕ Criar Competição') e corrigida a largura dos campos de Nome e Ano para ocuparem 100% da largura do formulário com preenchimento confortável.
Adicionadas opções para definir data inicial da competição, limite máximo de jogos por dia, seleção de múltiplos dias da semana permitidos, intervalo entre rodadas em semanas e horários alternados de partidas para a geração automática de tabelas.
Tratados valores nulos passados para funções nativas como strlen() e htmlspecialchars() no perfil de clubes e técnicos, evitando warnings de depreciação.
Adicionado tratamento defensivo nas consultas de dados de jogador, clube e usuário em transferências, prevenindo avisos de tipo booleano (array offset on bool) e falhas no disparo de e-mails.
Corrigida a geração dos nomes de arquivos de escudo e uniformes na importação de times (.ymt) contendo apóstrofos e aspas no nome, sanitizando os caracteres especiais e garantindo o salvamento correto no disco e banco.
Ajustada a busca exata e similar no assistente de importação para reconhecer jogadores, clubes e técnicos existentes que contenham apóstrofos ou entidades HTML no nome (ex: Ka'ai), evitando duplicações desnecessárias.
Implementadas travas de escopo que impedem usuários comuns (e admins impersonando) de sobrescrever clubes de outros usuários ou de ligas diferentes, permitindo atualização somente em clubes do próprio usuário dentro da mesma liga.
Corrigida a persistência e recuperação do ID dos jogadores recém-criados durante a importação (.ymt), garantindo que todo o elenco seja corretamente transferido, escalado e vinculado ao clube.
Corrigida a importação, cadastro e exibição de estádios contendo apóstrofos e aspas simples (ex: Ka'ai Fa'alulu), garantindo a decodificação de entidades HTML e evitando a gravação de códigos como ' no banco de dados.
Corrigida a importação de times (.ymt) para manter a data de início de contrato original dos jogadores que já pertenciam ao clube, evitando que uma nova transferência com data atual seja registrada indevidamente.
Corrigida a gravação da coluna 'foto' e a validação booleana das propriedades 'altitude' e 'caldeirao' no método Estadio::create(), além de resolver a inclusão de funções de imagem.
Adicionado tratamento de PDOException no método Time::alterar() com captura de erro de integridade (1062 - entrada duplicada) na chave única de sigla por país/sexo, retornando aviso amigável ao usuário e prevenindo travamentos fatais.
Adicionada interface com abas no TOPERO para visualizar o histórico de carreiras salvas pelo usuário e o Hall da Fama global do CONFUSA.top, permitindo reabrir os cards completos de carreira, rever a galeria de troféus e os clubes defendidos.
Adicionada a mecânica de convocação para seleções nacionais no TOPERO, com cálculo de força baseado em atletas em ligas Tier 1 da CONFUSA (mesmo para nações sem liga local) e disputa de torneios continentais de federações (FEASCOPA, Copa dos Três Mares, Taça dos Hemisférios) e Copa do Mundo de Seleções.
Refinadas as ofertas de transferências com base na idade e patamar do atleta, restrita a Bola de Ouro apenas para atletas da 1ª divisão (Tier 1), eliminadas dispensas arbitrárias de jovens e campeões, balanceada a Taça Nacional e renomeado o torneio continental de clubes para Copa do Mundo CONFUSA de Clubes.
Corrigida a correspondência de confrontos e BYEs no chaveamento em estatísticas para refletir fielmente os jogos gerados na fase seguinte, além de gravar a identificação da chave na geração inicial e no cron de avanço.
Lançada a funcionalidade Time Traveler para reconstituição histórica de elencos de clubes em qualquer data do passado a partir do histórico de transferências, com estatísticas da época, linha do tempo de entradas/saídas, visualização tática por setores e exportação direta do clube em .ymt.
Reformulado o layout da página de índice de competições para dispositivos móveis com transformação em cards dinâmicos elegantes, alinhamento flexível de atributos sem sobreposição de rótulos, paginação touch e botão de criação integrado ao cabeçalho.
Corrigida a execução da atualização de dados do clube no método Time::alterar(), garantindo que os parâmetros de texto e entidades HTML sejam sanitizados previamente e vinculados por referência válida na query SQL.
Corrigida a chamada de consultas SQL parametrizadas em getTeamColors, getTeamUniform, getTeamPlayers e getNomeEstadio para utilizar prepare() em vez de query(), evitando erros fatais de execução no PDO.
Ajustado o evento 'Proposta do Maior Rival' no TOPERO para que a escolha de aceitar a proposta transfira o atleta para um clube rival da mesma liga ou país, atualizando o clube atual e histórico da carreira.
Criado o arquivo LICENSE oficial com a licença Creative Commons Não-Comercial (CC BY-NC-SA 4.0), proibindo o uso e cópia com fins lucrativos de qualquer código ou ativos do projeto, e atualizado o README.md com as novas funcionalidades e módulos do sistema.
Ajustada a longevidade da carreira no TOPERO para que todos os atletas atuem até os 40 anos completos de idade, eliminando aposentadorias prematuras aleatórias.
Corrigido o buffer de subpaths do Canvas com isolamento estrito via beginPath(), carregamento prévio garantido de fontes Google (Outfit e Montserrat), vetores Path2D para troféus e contraste reforçado, assegurando que as 5 caixas de estatísticas, o badge de OVR, todos os títulos e todos os clubes defendidos apareçam nítidos, vibrantes e destacados.
Ajustada a regra de renovação contratual para que clubes tenham paciência com atletas em início de carreira (abaixo de 21 anos), garantindo sempre a opção de permanecer e se desenvolver no clube sem dispensas prematuras.
Corrigida a seleção de propostas de clubes de formação ao escolher países sem liga cadastrada ou com ligas de gênero específico, garantindo que as opções pertençam estritamente ao país mais próximo determinado geograficamente em vez de clubes aleatórios globais.
Corrigida referência de variável indefinida na filtragem de clubes do mercado de transferências que impedia o processamento e travava o botão de avançar temporada.
Corrigido falso status de competição 'Finalizada' ao término de rodadas preliminares como 32-avos de final, garantindo que torneios eliminatórios só sejam dados como concluídos após a Final (fase 8). Corrigida também a detecção da primeira fase e a ordem de processamento das fases eliminatórias (32-avos ➔ 16-avos ➔ Oitavas ➔ Quartas ➔ Semis ➔ Final) no Cron de simulação automática, ajustando o intervalo entre fases para 7 dias.
Ajustado o layout mobile do TOPERO com correção de centralização, padding seguro, quebra e alinhamento flexível de tags, chips de opções, cards de estatísticas, modais de decisão e histórico de temporadas sem sobreposição de elementos ou overflow.
Criado o novo jogo TOPERO como Web App (PWA) Standalone independente em Dark Theme (com manifest, service worker e instalação na tela inicial no estilo do Poltrona Score). Inclui escolha de gênero (Masculino e Feminino) com separação estrita de ligas e clubes para cada modalidade, início com 3 propostas de base em países ativos e ranqueados do CONFUSA, métricas dedicadas para goleiros (Gols Sofridos e Clean Sheets), primeiras temporadas sem transferências precoces, dilemas raros exclusivos, renovações contratuais realistas e correção de contraste no card da Carreira Histórica.
Declarada explicitamente a propriedade pública foto na classe Estadio e garantida a gravação correta do arquivo ao alterar estádio.
Limitada a largura e adicionada quebra de linha automática (word-wrap) para a identificação e e-mail dos usuários na tabela de logs de erro, mantendo a tabela compacta e legível.
Corrigido erro fatal por variável não definida ($lite_competicao) ao carregar cores, uniformes, elencos e dados da partida na tela de súmula, além de adicionar proteções e fallbacks para registros vazios.
Corrigida a importação de partidas em Gerenciador > Jogos, garantindo que os IDs de jogadores e eventos sejam mapeados pelo elenco do clube cadastrado no banco de dados e não por IDs locais do arquivo simulado, além de ajustar o link de comissão técnica para a página correta de técnicos.
Adicionada verificação segura para carregamento dos arquivos de súmula e proteção contra erros fatais de tipo e propriedades nulas em partidas antigas ou sem dados gravados.
Ajustado o tratamento de campos nulos de liga e país de técnicos sem clube para evitar advertências e manter compatibilidade com PHP moderno.
Adicionada uma nova coluna na Central de Logs do painel administrativo exibindo o nome real e usuário que gerou cada erro registrado no sistema.
Ajustada a lógica de avanço de mata-mata para respeitar o chaveamento consolidado com times de BYE e condicionada a criação automática da fase seguinte ao término do tempo de jogo das partidas da fase atual (120min ou 150min com pênaltis).
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.
NacionalidadeBeque Central (70%)
Quarto Zagueiro (70%)
Cabeça de Área (70%)
Transferências
| Data | Saiu de | Foi para | Valor |
|---|---|---|---|
| 20/01/2025Sem Custo | Sem clube | Oakland Tangent Gauntlet IIsports_soccer0j 0g 0CA 0CV | F$ 0 k |
 Tangent Gauntlet II (tier 2)
 Oakland 
Sem clube