Registo de alterações

NeoFrag Reborn 1.2.50

Luandre 15 out. 2026 20 min de leitura 15
Sumário
Sumário

Adicionado

  • Um tema mostra o seletor de idioma numa linha: nf_selecteur_langue(), ao lado de nf_selecteur_theme() e nf_liens_legaux(). Os temas incluídos copiavam cada um o seu formulário.
  • A documentação e as notas de versão, nos seis idiomas. Os guias da wiki — instalação, primeiros passos, administração, marketplace, site multilingue, bot Discord, framework, criar um tema, um módulo ou um widget — só existiam em francês e em inglês: escrevem-se agora também em alemão, espanhol, italiano e português, com as etiquetas exatas que o ecrã mostra em cada idioma, e a wiki serve-os no idioma do visitante. As notas de versão seguem o mesmo caminho: a página «Notas de versão» da wiki e as publicações do Blog leem-se nos seis idiomas. O francês continua a ser a referência; um teste recusa uma tradução que salte uma versão ou a date de outra forma.
  • As miniaturas dos módulos e dos widgets, refeitas. Em Temas & addons e no marketplace, a pré-visualização de uma extensão era uma fotografia dela a funcionar — ilegível quando não tinha dados para mostrar: uma moldura, um título, umas linhas. Cada módulo e cada widget recebe agora um cartão desenhado na linguagem visual do projeto: o seu ícone, o seu nome e o que faz, legíveis em qualquer tamanho. Os temas mantêm a fotografia da sua página inicial: um tema mostra-se a si próprio.
  • As bibliotecas incluídas atualizadas, e uma salvaguarda para que assim continuem. O editor de texto passa para o TinyMCE 8 (a linha 7 perdia o suporte a 14 de novembro, e a 8.9.3 corrigia uma falha do seu plugin «media») e os ícones para o Font Awesome 7 — os 363 ícones usados pelo site foram comparados com a nova coleção antes da mudança, e não falta nenhum. Os ficheiros de tipo de letra em duplicado (.ttf) desaparecem: a versão 7 só serve o formato moderno, menos 715 KB no pacote. Sobretudo, uma nova verificação está atenta: não dá o alarme a cada lançamento dos projetos de origem, mas recusa quando as versões entregues não são comparadas com o registo há mais de três meses. Uma dependência não se torna perigosa de repente — vai-se desviando, e esse desvio está agora à vista.
  • As notificações push. Um membro pode receber as suas notificações no navegador, mesmo com o site fechado: uma mensagem do fórum, uma reação, um lembrete de um evento. O administrador propõe-no (Definições → Preferências gerais → Notificações push); cada membro ativa-o depois dispositivo a dispositivo, nas suas preferências de notificações, escolhe tipo a tipo o que recebe assim, e pode enviar a si próprio um teste. Sem bibliotecas acrescentadas: a mensagem é cifrada só para esse navegador (RFC 8291) e assinada em nome do site (VAPID, RFC 8292) — o serviço push do navegador transporta-a sem a poder ler. O servidor só escreve para serviços push conhecidos (Google, Mozilla, Apple, Microsoft), nunca para um endereço que um membro pudesse ter inventado.
  • O Nebula e o tema montra ganham a sua página de cores, e os oito temas uma pré-visualização ao vivo. Destaque, fundo, texto: as paletas do Nebula e da montra estavam escritas nas suas folhas de estilo; ajustam-se agora como as dos outros seis temas, com a mesma recusa de uma cor ilegível. E por baixo dos seletores de cada tema, uma página real do site — a inicial, as notícias ou o fórum — adota as cores à medida que são escolhidas, sem guardar nada, com os contrastes medidos ao vivo: vê-se o resultado antes de clicar em «Guardar».
  • As ligações dos menus, as salas públicas, o título dado a um widget e as páginas da wiki traduzem-se. Com elas, já nenhum texto escrito pelo responsável do site fica sem idioma. Uma página da wiki guarda um histórico POR IDIOMA: traduzir para italiano não arquiva nada da versão francesa, e o histórico italiano só mostra as suas próprias revisões. Uma conversa entre membros mantém um único nome para todos os participantes — só as salas públicas se traduzem. A página «Notas de versão» da wiki passa a existir também em inglês.
  • A loja, os donativos, a publicidade, os pacotes de pagamento e o recrutamento traduzem-se. O nome e a descrição de um artigo da loja, o título e a descrição de uma campanha de donativos, o título de um anúncio, a etiqueta de um pacote e uma oferta de recrutamento inteira — título, introdução, descrição, requisitos e as perguntas do seu formulário de candidatura — escrevem-se agora idioma a idioma. As perguntas não tinham ecrã para serem editadas (só se podiam acrescentar ou eliminar): agora abre-as um lápis, e é aí que se traduzem. Continua comum o que não é texto: o preço, o stock, o endereço de uma campanha, o código de uma rede publicitária, o cargo atribuído na equipa — e as respostas dos candidatos, que mantêm a pergunta tal como a leram.
  • Os modos de jogo, os mapas, os programas da rádio web e os campos de perfil traduzem-se. «Compétitif 5v5» passa a «Competitive 5v5» para um visitante anglófono, «Le réveil du serveur» passa a «The server wake-up», e a etiqueta de um campo de perfil escreve-se em cada idioma. Um nome de mapa continua a ser um nome próprio, mas também se escreve por idioma, para quem quiser traduzir «Faille de l'invocateur». Foi feita uma escolha, e o ecrã di-lo: a LISTA DE OPÇÕES de um campo de perfil continua comum — uma opção é guardada tal como está na resposta do membro, e traduzi-la tornaria impossível encontrar as respostas já dadas.
  • Os tipos de evento, os cargos de equipa e as rubricas dos anúncios classificados traduzem-se. «Torneio», «Capitão», «Material»: três nomes curtos que o responsável do site escreve, e que um site em seis idiomas mostrava num só. Escrevem-se agora idioma a idioma, e o visitante vê-os no seu em todo o lado onde aparecem — a lista dos eventos e as suas fichas, o calendário, o plantel de uma equipa, o diretório dos anúncios classificados e os ecrãs da administração.
  • Uma sondagem edita-se sem perder os seus votos — e traduz-se. Até agora, guardar uma sondagem apagava todas as suas respostas para as recriar, e todos os VOTOS com elas: corrigir uma vírgula na pergunta custava a sondagem inteira (o ecrã avisava, o que não a tornava menos cara). Agora uma resposta mantém os seus votos enquanto continuar na lista — corrigida, movida ou traduzida; só uma resposta RETIRADA perde os seus, e o ecrã di-lo contando-os. É o que permite finalmente traduzir uma sondagem: a pergunta, a sua descrição e a etiqueta de cada resposta escrevem-se idioma a idioma, e escrever a versão italiana já não mexe na francesa.
  • As transferências, as ligações úteis e a FAQ traduzem-se. O título e a descrição de um ficheiro ou de uma ligação, a pergunta e a sua resposta, e os títulos das suas categorias, não tinham idioma: um site em seis idiomas mostrava-os num só — via-se na demonstração em inglês, que anunciava «Pack de fonds d'écran» e «Chaîne Twitch». Escrevem-se agora idioma a idioma, como as notícias ou os eventos: o ecrã de edição abre o idioma em que se trabalha e diz qual, e o visitante vê-os no seu idioma — na biblioteca, no diretório de ligações, nos widgets e nos blocos. O que não tem idioma (endereço, tamanho, tipo, versão, contadores) continua comum, e o que só está escrito num idioma continua visível nos outros cinco.
  • Uma cor de tema que tornaria o site ilegível é recusada. Os seis temas que deixam escolher a cor de destaque, do texto e do fundo aceitavam qualquer coisa: um destaque quase idêntico ao fundo, e as ligações e os botões desapareciam; um texto demasiado pálido, e a página deixava de se ler. Nada o avisava, e era preciso reencontrar sozinho a cor anterior. Cada cor é agora medida contra as outras duas — as guardadas, já que os dois formulários se guardam separadamente — e recusada, com o seu valor, quando não se destaca o suficiente: 4,5 para 1 no texto, 3 para 1 num destaque, como exige a norma de acessibilidade. As cores originais dos nove temas passam todas.
  • As bibliotecas incluídas atualizadas. O editor de texto (TinyMCE 7.6.1 → 7.9.3, que traz um limpador de HTML mais recente), os gráficos das estatísticas (Chart.js 4.4.7 → 4.5.1) e as listas pendentes (Tom Select 2.6.1 → 2.6.2). As outras três — Bootstrap, flatpickr, Sortable — já estavam na última versão publicada. As traduções do editor, corrigidas à mão, são mantidas.
  • Trinta e um títulos de ecrã falavam francês nos seis idiomas. «Atualizações», «Novo mapa», «Minha opinião sobre a candidatura», «Gerir a minha conta», «Parceiros», «Ofertas de recrutamento»…: os títulos de painéis, janelas e botões não passavam pelas traduções, e apareciam em francês fosse qual fosse o idioma do site. A sua tradução já existia, nos seis idiomas: só faltava a chamada. A verificação que vigia os textos escritos no código deixava-os passar porque supunha que esses títulos eram traduzidos pelo produto — o que só as etiquetas de FORMULÁRIO fazem realmente; agora distingue os dois casos.
  • Três ecrãs recuperam o desenho do seu tema. A folha de estilo de um widget é servida depois da do tema: onde as duas diziam o mesmo com o mesmo peso, ganhava o widget, e o tema desenhava no vazio — um ecrã apresentável, um desenho pretendido nunca servido, e nada que o dissesse. O painel direito do Extend (quem está online, a sala de conversa) e os seus números grandes recuperam o seu tipo de letra e as suas cores; os separadores do perfil do Forge voltam a ser quadrados, sublinhados e em maiúsculas, como nos seus temas irmãos; e o indicador de saúde da Monitorização cabe finalmente no seu círculo, em vez de transbordar. Uma verificação recusa agora qualquer declaração de tema que nunca se pudesse aplicar.
  • Os eventos traduzem-se. O título de um evento, a sua descrição, a sua descrição privada e o seu local não tinham idioma: um site em seis idiomas mostrava-os num só. Escrevem-se agora idioma a idioma — o ecrã de edição abre o idioma em que se trabalha, e diz qual. O visitante vê um evento no seu idioma em todo o lado onde aparece: a lista, a ficha, o calendário, os lembretes por e-mail, o mapa do site e o widget. O que não tem idioma (as datas, o tipo, a imagem, o autor, os participantes) continua comum; um evento escrito num só idioma continua visível nos outros cinco.
  • O palmarés traduz-se. O nome de um título conquistado, o seu local e o seu relato não tinham idioma: um site em seis idiomas mostrava-os num só. Escrevem-se agora idioma a idioma, como o resto — o ecrã de edição abre o idioma em que se trabalha, e diz qual. O que não tem idioma (a data, a classificação, o número de participantes, a plataforma, a equipa, o jogo) continua comum.
  • O diaporama traduz-se. O título e a legenda de um diapositivo não tinham idioma: um site em seis idiomas mostrava-os num só. Escrevem-se agora idioma a idioma, como uma página ou uma categoria — a administração escreve no idioma em que trabalha, e di-lo por cima do campo. O visitante vê o diapositivo no seu idioma; um diapositivo traduzido num só idioma continua visível nos outros cinco (o texto do idioma pedido, senão o francês, senão o primeiro escrito), e um diapositivo sem nenhum texto mantém a sua imagem. Nada se perde na atualização: o texto de hoje é copiado para todos os idiomas instalados, já que é o que todos os visitantes veem hoje.
  • As sanções do site seguem o membro no Discord. Com o bot 0.3.0 e a sua funcionalidade Sanções ligadas (desligada de início), os silenciamentos e os banimentos de todo o site aplicam-se à conta Discord ligada do membro — um castigo temporário para um silenciamento, um banimento para um banimento — e são levantados no Discord quando são levantados no site. Um aviso, uma restrição ou um shadow ban nunca passam. No sentido inverso, e só se for ligado: um moderador cuja conta Discord está ligada a uma conta do site com esse direito pode banir ou castigar no Discord, e o site recebe a sanção e volta a julgá-la como se tivesse sido decidida nele. A lista das sanções diz agora de onde vem cada uma.
  • Os coletivos. Um novo módulo reúne membros à volta de um projeto, longe dos outros: uma redação, uma equipa de moderação, um grupo de criadores. Criado na administração (Comunidade → Coletivos), um coletivo recebe uma secção privada do fórum, que só os seus membros leem, e — com o bot 0.3.0 e a sua funcionalidade Coletivos — um cargo e um canal privado no Discord. O seu responsável acrescenta membros e dá-lhes uma patente (administrador, moderador, membro) a partir da página do coletivo, sem ser administrador do site; os moderadores moderam a sua secção. Se um coletivo for eliminado, a sua secção e o seu canal ficam, reservados aos administradores: nada do que lá foi escrito se perde.
  • As quotas. Uma associação cobra as suas quotas no site: um membro paga online (Stripe) — ou a administração regista uma quota paga em dinheiro ou por cheque — e torna-se aderente durante o período escolhido. Recebe o cargo «Aderente», que se pode abrir ao que se quiser (uma secção reservada do fórum, páginas), e o distintivo do grupo «Aderentes». Sete dias antes do fim do prazo é avisado; quando o prazo termina, o cargo é-lhe retirado. As quotas não precisam do módulo Gamificação, que os pagamentos exigiam até agora.
  • Os donativos feitos noutros sítios registam-se sozinhos. Ko-fi, HelloAsso, TipeeeStream e o botão PayPal das campanhas: cada donativo chega à campanha escolhida, uma única vez, e a barra de progresso avança sem introdução manual. Nada se regista sem prova — o token do Ko-fi, a encomenda relida no HelloAsso, a confirmação do PayPal. Uma adesão paga no HelloAsso torna aderente o membro do site com o mesmo endereço de e-mail. Os nomes dos doadores do HelloAsso e do PayPal não são mostrados publicamente.

Segurança

  • O bot Discord assinala que é administrador do servidor. Não precisa de o ser — a ligação de convite não o pede —, mas um cargo atribuído à mão podia dar-lhe esse direito, e um bot administrador cujo token se divulgue abre o servidor inteiro. Sempre que entra no servidor, o registo do bot, que a administração mostra, di-lo, e indica as permissões que faltam ao seu cargo.
  • A ligação de «/forum account link» nem sempre ligava a conta certa. Quem recebia essa ligação de outra pessoa ligava a conta Discord dessa pessoa à SUA PRÓPRIA conta do site — e como uma conta ligada permite iniciar sessão, quem tinha enviado a ligação podia depois entrar na conta da sua vítima. A ligação é agora confirmada junto do Discord: o site compara o identificador que o Discord lhe devolve com o que a ligação indica, e não liga nada se forem diferentes. Um aviso fazia as vezes desta verificação; não bastava.

Corrigido

  • A definição «Tipo de letra do site» dizia que os tipos de letra eram servidos pelo Google Fonts. São servidos pelo próprio site desde que nenhum visitante é enviado para a Google: a descrição agora di-lo.
  • Uma atualização de addon voltava a executar todas as suas migrações. A leitura das migrações já feitas voltava sempre vazia: a cada atualização de um módulo, widget ou tema — pelo marketplace ou por um arquivo —, todas as suas migrações eram executadas de novo, e as que escrevem dados escreviam-nos uma segunda vez. Agora só as novas são executadas. check-db-query vigia a forma que causava o defeito: uma consulta preparada sem chegar a ser enviada.
  • A contagem decrescente dos eventos futuros ficava vazia. O seu script vivia num tema retirado: a lista de eventos e a página de um evento mostravam uma ampulheta ao lado de nada, em todos os temas. Agora vive com o módulo, e escreve o tempo que falta no idioma da página («11 dias 7 h 22 min», «11d 7h 22m»).
  • Logo após uma atualização, o site ainda podia servir o código antigo. A cache do PHP (OPcache) guarda o código compilado de um ficheiro até o voltar a verificar: dois segundos em geral, e até ao reinício do PHP nos alojamentos que desligam essa verificação. A atualização do núcleo, a de um addon pelo marketplace e o envio de um arquivo por «Adicionar» não a avisavam: uma página de um módulo atualizado respondia «página não encontrada» até os seus novos endereços serem relidos, e um site podia funcionar com uma mistura de código antigo e novo. Os três avisam agora a cache de cada ficheiro que escrevem.
  • Atualizar um addon enviando o seu arquivo saltava as suas migrações — e apagava a disposição de um tema. «Adicionar», em Temas & addons, reinstalava o addon em vez de o atualizar: as alterações da sua base de dados ficavam marcadas como feitas sem o serem, e um tema perdia todas as suas disposições e os respetivos widgets, substituídos pela disposição de origem. Um arquivo mais recente atualiza-se agora como pelo marketplace: a base de dados acompanha, e a disposição continua a ser a do administrador.
  • No editor ao vivo do Nebula, as pré-visualizações dos estilos eram as do Forge: laranja sobre castanho. Passam a ter as cores do Nebula, as que o administrador escolheu. A mesma correção para o tema montra.
  • Um widget de navegação que mostrava um menu guardava uma cópia congelada dele. Copiava as ligações do menu no momento em que era guardado, e esquecia até qual tinha sido escolhido: uma ligação acrescentada ou renomeada depois nunca chegava à navegação. O menu é agora relido a cada apresentação, no idioma da página.
  • Uma ligação para uma secção de uma página da wiki levava ao topo da página. Só os títulos de primeiro nível tinham uma âncora: uma ligação para um subtítulo não encontrava nada, e a documentação, que remete muitas vezes para uma secção precisa («ver Referenciação»), deixava o leitor no início da página, em todos os idiomas. Os subtítulos têm agora a sua âncora, e cada remissão da documentação leva ao título que indica.
  • Uma página da wiki colocada debaixo de uma das suas próprias subpáginas desaparecia do índice, com toda a sua secção: o ecrã propunha as subpáginas como página-mãe. Já não o faz, e um ciclo destes enviado mesmo assim é recusado.
  • O formulário de candidatura respondia «Erro 500» assim que uma oferta fazia uma pergunta facultativa. Uma regra «nenhuma» escrita como texto vazio não era entendida pela biblioteca de formulários, e a página inteira caía. Encontrado ao testar a tradução das perguntas.
  • O widget Recrutamento escondia as ofertas sem candidaturas — ou seja, todas as ofertas acabadas de abrir. O módulo tinha sido corrigido; o widget não.
  • Uma confirmação de eliminação aberta em página inteira não mostrava nada. Na administração, seguir uma ligação «Eliminar» num novo separador — ou sem JavaScript — levava a uma página em branco: nem mensagem, nem botão, nem caminho de volta. Mostra agora o que vai eliminar, o botão que o faz e uma ligação de volta ao módulo.
  • As páginas Moderação e Monitorização não tinham o aspeto do resto da administração. Os seus cartões de números, os seus cabeçalhos e o pulsar do indicador de saúde vinham de uma folha de estilo de recurso — prevista para os sites que mostram esses ecrãs fora da administração — que, servida em último lugar, se sobrepunha ao tema. O recurso só se aplica agora onde o tema não diz nada.
  • Em português, uma conta não podia ser eliminada. O ecrã pedia para escrever «EXCLUIR» e o site esperava «ELIMINAR»: a confirmação falhava sempre. Os outros cinco idiomas estavam certos. Uma verificação recusa agora que uma instrução cite uma palavra diferente da que o site espera.
  • O português misturava o Brasil e Portugal. Oitenta expressões revistas: usuário passa a utilizador, senha a palavra-passe, excluir a eliminar, registro a registo, e arquivo passa a ficheiro quando se trata de um ficheiro — e continua arquivo quando se trata de um arquivo.
  • Algumas frases inglesas desajeitadas: «All posts will be also deleted» passa a «will also be deleted», nas quatro mensagens de eliminação onde ainda estava.
  • Traduzir um conteúdo pela primeira vez: o texto perdia-se, sem uma palavra. Escrever uma notícia em francês, passar a administração para inglês, traduzi-la e guardar: nada ficava guardado. A linha desse idioma ainda não existia, e a gravação não tocava em nenhuma linha — em silêncio. Isto valia para as notícias, as publicações do blog, as páginas, as categorias, as galerias, os jogos, as equipas, os grupos e os parceiros. Uma tradução cria agora a sua linha.
  • Um conteúdo ainda não traduzido era impossível de encontrar na administração desse idioma. As listas das notícias, das publicações do blog e das páginas só mostravam o que existia no idioma em que se trabalha: o resto era invisível, logo impossível de abrir para traduzir. As listas mostram agora tudo, com o melhor título disponível, e o ecrã de edição abre-se com os campos vazios, prontos para a tradução.
  • Mudar o nome de um grupo apagava todas as suas traduções. A gravação não visava nenhum idioma em particular: escrevia o mesmo título em todas as linhas do grupo — e falhava assim que o site tinha mais do que uma.
  • Um parceiro só podia ter um idioma. A tabela das traduções do módulo Parceiros tinha como chave apenas o número do parceiro: um segundo idioma era recusado ou substituía o primeiro. Tem agora uma linha por idioma, como as outras dezasseis tabelas de tradução, e descrever um parceiro num novo idioma cria a sua linha em vez de não escrever nada.
  • O próximo encontro: o dia da semana colado ao número do dia. Na caixa da data do widget O próximo encontro, as três linhas — dia da semana, número do dia, mês — tocavam-se, e sobrepunham-se assim que um tema aplicava o seu tipo de letra de títulos: os algarismos saíam de uma altura de linha mais curta do que a sua tinta. As três linhas mantêm agora o seu espaçamento nos sete temas, em modo claro e escuro. A mesma correção para os números grandes do widget O site em números.
  • O Pulse desenha finalmente os seus widgets. O tema previa o seu próprio aspeto para a caixa da data do calendário, os números de O site em números, a semana e as miniaturas da galeria: nenhum aparecia, porque a folha de estilo do widget é servida depois da do tema e ganhava em igualdade de especificidade. O mosaico do Pulse (cantos arredondados, algarismos grandes, cinzento-ardósia) aparece agora como a maqueta o mostrava.

Leia também

0
Comentários

Gerir os meus cookies

O site só instala os cookies necessários ao seu funcionamento: não exigem o seu consentimento. Os outros serviços pertencem a outras empresas; só são carregados se os aceitar. A sua escolha é guardada durante seis meses, e pode alterá-la a qualquer momento.

Necessários ao site Sempre ativos

  • __Host-session Mantém a sua sessão iniciada e protege os formulários contra envios fraudulentos. Até fechar o navegador; um ano com «Lembrar-me»
  • nf_consent Guarda as escolhas que faz nesta janela. 6 meses
  • nf_fuseau Mostra as datas e as horas no seu fuso horário. 1 ano
  • Armazenamento do navegador Guarda a sua escolha entre o modo dia e o modo noite, e a apresentação escolhida para a lista de artigos. Até que o limpe

Vídeos

Os vídeos integrados nas páginas: o leitor vem da plataforma, que recebe o seu endereço IP e pode instalar os seus cookies.

Música

As faixas e listas de reprodução integradas nas páginas: o leitor vem da plataforma, que recebe o seu endereço IP e pode instalar os seus cookies.