Registro de cambios

NeoFrag Reborn 1.2.50

Luandre 15 oct 2026 20 min de lectura 15
Índice
Índice

Añadido

  • Un tema muestra el selector de idioma en una línea: nf_selecteur_langue(), junto a nf_selecteur_theme() y nf_liens_legaux(). Los temas incluidos copiaban cada uno su formulario.
  • La documentación y las notas de versión, en los seis idiomas. Las guías de la wiki — instalación, primeros pasos, administración, marketplace, sitio multilingüe, bot de Discord, framework, crear un tema, un módulo o un widget — solo existían en francés y en inglés: ahora se escriben también en alemán, español, italiano y portugués, con las etiquetas exactas que muestra la pantalla en cada idioma, y la wiki las sirve en el idioma del visitante. Las notas de versión siguen el mismo camino: la página «Notas de versión» de la wiki y las entradas del Blog se leen en los seis idiomas. El francés sigue siendo la referencia; una prueba rechaza una traducción que se saltara una versión o la fechara de otra forma.
  • Las miniaturas de los módulos y widgets, rehechas. En Temas y addons y en el marketplace, la vista previa de una extensión era una foto de ella en funcionamiento — ilegible cuando no tenía datos que mostrar: un marco, un título, unas líneas. Cada módulo y cada widget recibe ahora una tarjeta dibujada con el lenguaje visual del proyecto: su icono, su nombre y lo que hace, legibles a cualquier tamaño. Los temas conservan la foto de su página de inicio: un tema se muestra a sí mismo.
  • Las bibliotecas incluidas al día, y una salvaguarda para que lo sigan estando. El editor de texto pasa a TinyMCE 8 (la línea 7 perdía su soporte el 14 de noviembre, y la 8.9.3 corregía un fallo de su plugin «media») y los iconos a Font Awesome 7 — los 363 iconos que usa el sitio se cotejaron con la nueva colección antes del cambio, y no falta ninguno. Los archivos de fuente duplicados (.ttf) desaparecen: la versión 7 solo sirve el formato moderno, 715 KB menos en el paquete. Sobre todo, un nuevo control vigila: no da la alarma con cada publicación de los proyectos de origen, pero rechaza cuando las versiones entregadas llevan más de tres meses sin cotejarse con el registro. Una dependencia no se vuelve peligrosa de golpe — se va desviando, y ahora esa deriva se ve.
  • Las notificaciones push. Un miembro puede recibir sus notificaciones en el navegador, incluso con el sitio cerrado: un mensaje del foro, una reacción, un recordatorio de evento. El administrador lo ofrece (Ajustes → Preferencias generales → Notificaciones push); cada miembro lo activa después dispositivo por dispositivo, en sus preferencias de notificaciones, elige tipo por tipo lo que recibe así, y puede enviarse una prueba. Sin añadir bibliotecas: el mensaje se cifra para ese navegador en concreto (RFC 8291) y se firma en nombre del sitio (VAPID, RFC 8292) — el servicio push del navegador lo transporta sin poder leerlo. El servidor solo escribe a servicios push conocidos (Google, Mozilla, Apple, Microsoft), nunca a una dirección que un miembro hubiera podido inventar.
  • Nebula y el tema escaparate tienen su página de colores, y los ocho temas una vista previa en directo. Acento, fondo, texto: las paletas de Nebula y del escaparate estaban escritas en sus hojas de estilo; ahora se ajustan como las de los otros seis temas, con el mismo rechazo de un color ilegible. Y bajo los selectores de cada tema, una página real del sitio — la de inicio, las noticias o el foro — toma los colores a medida que se eligen, sin guardar nada, con los contrastes medidos en directo: se ve el resultado antes de pulsar «Guardar».
  • Los enlaces de los menús, las salas públicas, el título propio de un widget y las páginas de la wiki se traducen. Con ellos, ya no queda ningún texto escrito por el responsable del sitio sin idioma. Una página de la wiki guarda un historial POR IDIOMA: traducir al italiano no archiva nada de la versión francesa, y el historial italiano solo muestra sus propias revisiones. Una conversación entre miembros conserva un único nombre para todos sus participantes — solo se traducen las salas públicas. La página «Notas de versión» de la wiki existe ahora también en inglés.
  • La tienda, las donaciones, la publicidad, los paquetes de pago y el reclutamiento se traducen. El nombre y la descripción de un artículo de la tienda, el título y la descripción de una campaña de donaciones, el título de un anuncio, la etiqueta de un paquete y una oferta de reclutamiento entera — su título, su entradilla, su descripción, sus requisitos y las preguntas de su formulario de candidatura — se escriben ahora idioma por idioma. Las preguntas no tenían pantalla para editarlas (solo se podían añadir o eliminar): ahora las abre un lápiz, y es ahí donde se traducen. Lo que no es texto sigue siendo común: el precio, el stock, la dirección de una campaña, el código de una red publicitaria, el rol asignado en el equipo — y las respuestas de los candidatos, que conservan la pregunta tal como la leyeron.
  • Los modos de juego, los mapas, los programas de la radio web y los campos de perfil se traducen. «Compétitif 5v5» se convierte en «Competitive 5v5» para un visitante de habla inglesa, «Le réveil du serveur» en «The server wake-up», y la etiqueta de un campo de perfil se escribe en cada idioma. Un nombre de mapa sigue siendo un nombre propio, pero también se escribe por idioma, para quien quiera traducir «Faille de l'invocateur». Se ha tomado una decisión, y la pantalla lo dice: la LISTA DE OPCIONES de un campo de perfil sigue siendo común — una opción se guarda tal cual en la respuesta del miembro, y traducirla haría imposibles de encontrar las respuestas ya dadas.
  • Los tipos de evento, los roles de equipo y las secciones de los anuncios clasificados se traducen. «Torneo», «Capitán», «Material»: tres nombres cortos que escribe el responsable del sitio, y que un sitio en seis idiomas mostraba en uno solo. Ahora se escriben idioma por idioma, y el visitante los ve en el suyo en todos los lugares donde aparecen — la lista de eventos y sus fichas, el calendario, la plantilla de un equipo, el directorio de anuncios clasificados y las pantallas de administración.
  • Una encuesta se edita sin perder sus votos — y se traduce. Hasta ahora, guardar una encuesta borraba todas sus respuestas para volver a crearlas, y todos los VOTOS con ellas: corregir una coma en la pregunta costaba la encuesta entera (la pantalla lo avisaba, lo que no la hacía menos costosa). Ahora una respuesta conserva sus votos mientras siga en la lista — corregida, movida o traducida; solo una respuesta RETIRADA pierde los suyos, y la pantalla lo dice contándolos. Es lo que por fin permite traducir una encuesta: la pregunta, su descripción y la etiqueta de cada respuesta se escriben idioma por idioma, y escribir la versión italiana ya no toca la francesa.
  • Las descargas, los enlaces útiles y la FAQ se traducen. El título y la descripción de un archivo o de un enlace, la pregunta y su respuesta, y los títulos de sus categorías, no tenían idioma: un sitio en seis idiomas los mostraba en uno solo — se veía en la demostración en inglés, que anunciaba «Pack de fonds d'écran» y «Chaîne Twitch». Ahora se escriben idioma por idioma, como las noticias o los eventos: la pantalla de edición abre el idioma en el que se trabaja y dice cuál, y el visitante los ve en su idioma — en la biblioteca, en el directorio de enlaces, en los widgets y en los bloques. Lo que no tiene idioma (la dirección, el tamaño, el tipo, la versión, los contadores) sigue siendo común, y lo que solo está escrito en un idioma sigue visible en los otros cinco.
  • Se rechaza un color de tema que haría ilegible el sitio. Los seis temas que dejan elegir su color de acento, de texto y de fondo aceptaban cualquier cosa: un acento casi idéntico al fondo, y los enlaces y botones desaparecían; un texto demasiado pálido, y la página ya no se podía leer. Nada lo advertía, y había que recuperar uno mismo el color anterior. Cada color se mide ahora frente a los otros dos — los guardados, ya que los dos formularios se guardan por separado — y se rechaza, con su cifra, cuando no destaca lo suficiente: 4,5 a 1 para el texto, 3 a 1 para un acento, como exige la norma de accesibilidad. Los colores originales de los nueve temas pasan todos.
  • Las bibliotecas incluidas, actualizadas. El editor de texto (TinyMCE 7.6.1 → 7.9.3, que incluye un limpiador de HTML más reciente), los gráficos de las estadísticas (Chart.js 4.4.7 → 4.5.1) y las listas desplegables (Tom Select 2.6.1 → 2.6.2). Las otras tres — Bootstrap, flatpickr, Sortable — ya estaban en la última versión publicada. Se conservan las traducciones del editor, corregidas a mano.
  • Treinta y un títulos de pantalla hablaban francés en los seis idiomas. «Actualizaciones», «Nuevo mapa», «Mi opinión sobre la candidatura», «Gestionar mi cuenta», «Socios», «Ofertas de reclutamiento»…: los títulos de paneles, ventanas y botones no pasaban por las traducciones, y se mostraban en francés fuera cual fuera el idioma del sitio. Su traducción ya existía, en los seis idiomas: solo faltaba la llamada. El control que vigila los textos fijos en el código los dejaba pasar porque suponía que esos títulos los traducía el producto — lo que en realidad solo hacen las etiquetas de FORMULARIO; ahora distingue ambos casos.
  • Tres pantallas recuperan el diseño de su tema. La hoja de estilos de un widget se sirve después de la del tema: cuando ambas decían lo mismo con el mismo peso, ganaba el widget, y el tema dibujaba en el vacío — una pantalla presentable, un diseño pensado que nunca se servía, y nada que lo dijera. El panel derecho de Extend (quién está en línea, la sala de chat) y sus grandes cifras recuperan su tipografía y sus colores; las pestañas del perfil de Forge vuelven a ser cuadradas, subrayadas y en mayúsculas, como las de sus temas hermanos; y el indicador de salud de la Monitorización cabe por fin en su círculo, en lugar de desbordarlo. Un control rechaza ahora cualquier declaración de tema que nunca podría aplicarse.
  • Los eventos se traducen. El título de un evento, su descripción, su descripción privada y su lugar no tenían idioma: un sitio en seis idiomas los mostraba en uno solo. Ahora se escriben idioma por idioma — la pantalla de edición abre el idioma en el que se trabaja, y dice cuál. El visitante ve un evento en su idioma en todos los lugares donde aparece: la lista, la ficha, el calendario, los recordatorios por correo, el mapa del sitio y el widget. Lo que no tiene idioma (las fechas, el tipo, la imagen, el autor, los participantes) sigue siendo común; un evento escrito en un solo idioma sigue visible en los otros cinco.
  • El palmarés se traduce. El nombre de un título ganado, su lugar y su relato no tenían idioma: un sitio en seis idiomas los mostraba en uno solo. Ahora se escriben idioma por idioma, como el resto — la pantalla de edición abre el idioma en el que se trabaja, y dice cuál. Lo que no tiene idioma (la fecha, la posición, el número de participantes, la plataforma, el equipo, el juego) sigue siendo común.
  • El carrusel se traduce. El título y la leyenda de una diapositiva no tenían idioma: un sitio en seis idiomas los mostraba en uno solo. Ahora se escriben idioma por idioma, como una página o una categoría — la administración escribe en el idioma en el que trabaja, y lo dice encima del campo. El visitante ve la diapositiva en su idioma; una diapositiva traducida a un solo idioma sigue visible en los otros cinco (el texto del idioma pedido, si no el francés, si no el primero que se escribió), y una diapositiva sin ningún texto conserva su imagen. Nada se pierde en la actualización: el texto de hoy se copia en todos los idiomas instalados, ya que es lo que hoy ve cualquier visitante.
  • Las sanciones del sitio siguen al miembro en Discord. Con el bot 0.3.0 y su función Sanciones vinculadas (desactivada al principio), los silencios y baneos de todo el sitio se aplican a la cuenta de Discord vinculada del miembro — un aislamiento temporal para un silencio, un baneo para un baneo — y se levantan en Discord cuando se levantan en el sitio. Una advertencia, una restricción o un shadow ban nunca se trasladan. En sentido contrario, y solo si se activa: un moderador cuya cuenta de Discord está vinculada a una cuenta del sitio que tiene permiso para ello puede banear o aislar en Discord, y el sitio recibe la sanción y la vuelve a juzgar como si se hubiera dictado en él. La lista de sanciones dice ahora de dónde viene cada una.
  • Los colectivos. Un nuevo módulo reúne a miembros en torno a un proyecto, al margen de los demás: una redacción, un equipo de moderación, un grupo de creadores. Creado en la administración (Comunidad → Colectivos), un colectivo recibe una sección privada del foro, que solo leen sus miembros, y — con el bot 0.3.0 y su función Colectivos — un rol y un canal privado en Discord. Su responsable añade miembros y les da un rango (administrador, moderador, miembro) desde la página del colectivo, sin ser administrador del sitio; los moderadores moderan su sección. Si se elimina un colectivo, su sección y su canal se conservan, reservados a los administradores: nada de lo que se escribió allí se pierde.
  • Las cuotas. Una asociación cobra sus cuotas en el sitio: un miembro paga en línea (Stripe) — o la administración registra una cuota pagada en efectivo o con cheque — y pasa a ser afiliado durante el periodo elegido. Recibe el rol «Afiliado», que se puede abrir a lo que se quiera (una sección reservada del foro, páginas), y la insignia del grupo «Afiliados». Siete días antes del vencimiento se le avisa; al vencer, se le retira el rol. Las cuotas no necesitan el módulo Gamificación, que los pagos exigían hasta ahora.
  • Las donaciones hechas en otros sitios se registran solas. Ko-fi, HelloAsso, TipeeeStream y el botón de PayPal de las campañas: cada donación llega a la campaña elegida, una sola vez, y la barra de progreso avanza sin introducir nada a mano. Nada se registra sin prueba — el token de Ko-fi, el pedido releído en HelloAsso, la confirmación de PayPal. Una afiliación pagada en HelloAsso convierte en afiliado al miembro del sitio que tiene la misma dirección de correo. Los nombres de los donantes de HelloAsso y PayPal no se muestran públicamente.

Seguridad

  • El bot de Discord avisa de que es administrador del servidor. No lo necesita — el enlace de invitación no lo pide —, pero un rol asignado a mano podía darle ese permiso, y un bot administrador cuyo token se filtra abre todo el servidor. Cada vez que entra en el servidor, el registro del bot, que muestra la administración, lo dice, y nombra los permisos que le faltan a su rol.
  • El enlace de «/forum account link» no siempre vinculaba la cuenta correcta. Quien recibía ese enlace de otra persona vinculaba la cuenta de Discord de esa persona a SU PROPIA cuenta del sitio — y como una cuenta vinculada permite iniciar sesión, quien había enviado el enlace podía después entrar en la cuenta de su víctima. La vinculación se confirma ahora con Discord: el sitio compara el identificador que Discord le devuelve con el que nombra el enlace, y no vincula nada si difieren. Una advertencia sustituía a esta comprobación; no bastaba.

Corregido

  • El ajuste «Fuente del sitio» decía que las fuentes las servía Google Fonts. Las sirve el propio sitio desde que ningún visitante se envía ya a Google: la descripción ahora lo dice.
  • Una actualización de addon volvía a ejecutar todas sus migraciones. La lectura de las migraciones ya hechas siempre volvía vacía: en cada actualización de un módulo, un widget o un tema — por el marketplace o por un archivo —, todas sus migraciones se ejecutaban de nuevo, y las que escriben datos los escribían una segunda vez. Ahora solo se ejecutan las nuevas. check-db-query vigila la forma que causaba el defecto: una consulta preparada sin llegar a enviarse.
  • La cuenta atrás de los eventos próximos se quedaba vacía. Su script vivía en un tema retirado: la lista de eventos y la página de un evento mostraban un reloj de arena junto a nada, en todos los temas. Ahora vive con el módulo, y escribe el tiempo que queda en el idioma de la página («11d 7h 22min», «11d 7h 22m»).
  • Justo después de una actualización, el sitio todavía podía servir el código antiguo. La caché de PHP (OPcache) conserva el código compilado de un archivo hasta que lo vuelve a comprobar: dos segundos en general, y hasta el reinicio de PHP en los alojamientos que desactivan esa comprobación. La actualización del núcleo, la de un addon por el marketplace y el envío de un archivo por «Añadir» no la avisaban: una página de un módulo actualizado respondía «página no encontrada» hasta que se volvían a leer sus nuevas direcciones, y un sitio podía funcionar con una mezcla de código antiguo y nuevo. Las tres avisan ahora a la caché de cada archivo que escriben.
  • Actualizar un addon enviando su archivo se saltaba sus migraciones — y borraba la disposición de un tema. «Añadir», en Temas y addons, reinstalaba el addon en lugar de actualizarlo: los cambios de su base de datos se marcaban como hechos sin hacerse, y un tema perdía todas sus disposiciones y sus widgets, sustituidos por su disposición original. Un archivo más reciente se actualiza ahora como por el marketplace: su base de datos sigue, y la disposición sigue siendo la del administrador.
  • En el editor en vivo de Nebula, las vistas previas de los estilos eran las de Forge: naranja sobre marrón. Ahora toman los colores de Nebula, los que eligió el administrador. La misma corrección para el tema escaparate.
  • Un widget de navegación que mostraba un menú guardaba una copia congelada de él. Copiaba los enlaces del menú en el momento de guardarlo, y hasta olvidaba cuál se había elegido: un enlace añadido o renombrado después nunca llegaba a la navegación. El menú se vuelve a leer ahora en cada visualización, en el idioma de la página.
  • Un enlace a una sección de una página de la wiki llevaba al principio de la página. Solo los títulos de primer nivel tenían un ancla: un enlace a un subtítulo no encontraba nada, y la documentación, que a menudo remite a una sección concreta («ver Posicionamiento»), dejaba a su lector al principio de la página, en todos los idiomas. Los subtítulos tienen ahora su ancla, y cada remisión de la documentación lleva al título que nombra.
  • Una página de la wiki colocada bajo una de sus propias subpáginas desaparecía del índice, con toda su sección: la pantalla ofrecía las subpáginas como página madre. Ya no lo hace, y un bucle así enviado de todos modos se rechaza.
  • El formulario de candidatura respondía «Error 500» en cuanto una oferta hacía una pregunta opcional. Una regla «ninguna» escrita como texto vacío no la entendía la biblioteca de formularios, y toda la página caía. Encontrado al probar la traducción de las preguntas.
  • El widget Reclutamiento ocultaba las ofertas sin candidaturas — es decir, toda oferta recién abierta. El módulo se había corregido; el widget, no.
  • Una confirmación de eliminación abierta como página completa no mostraba nada. En la administración, seguir un enlace «Eliminar» en una nueva pestaña — o sin JavaScript — llevaba a una página en blanco: ni mensaje, ni botón, ni vuelta atrás. Ahora muestra lo que va a eliminar, el botón que lo hace y un enlace de vuelta al módulo.
  • Las páginas Moderación y Monitorización no se parecían al resto de la administración. Sus tarjetas de cifras, sus cabeceras y el latido del indicador de salud venían de una hoja de estilos de respaldo — prevista para los sitios que muestran esas pantallas fuera de la administración — que, servida en último lugar, se imponía al tema. El respaldo solo se aplica ahora donde el tema no dice nada.
  • En portugués, no se podía eliminar una cuenta. La pantalla pedía escribir «EXCLUIR» y el sitio esperaba «ELIMINAR»: la confirmación fallaba siempre. Los otros cinco idiomas eran correctos. Un control rechaza ahora que una instrucción cite una palabra distinta de la que espera el sitio.
  • El portugués mezclaba Brasil y Portugal. Ochenta expresiones revisadas: usuário pasa a utilizador, senha a palavra-passe, excluir a eliminar, registro a registo, y arquivo pasa a ficheiro cuando designa un fichero — y sigue siendo arquivo cuando designa un archivo comprimido.
  • Algunas frases torpes en inglés: «All posts will be also deleted» pasa a «will also be deleted», en los cuatro mensajes de eliminación en los que quedaba.
  • Traducir un contenido por primera vez: el texto se perdía, sin una palabra. Escribir una noticia en francés, pasar la administración al inglés, traducirla y guardar: no se conservaba nada. La fila de ese idioma aún no existía, y el guardado no tocaba ninguna fila — en silencio. Ocurría con las noticias, las entradas del blog, las páginas, las categorías, las galerías, los juegos, los equipos, los grupos y los socios. Una traducción crea ahora su fila.
  • Un contenido aún sin traducir era inencontrable en la administración de ese idioma. Las listas de noticias, de entradas del blog y de páginas solo mostraban lo que existía en el idioma en el que se trabaja: el resto era invisible, y por tanto imposible de abrir para traducirlo. Las listas lo muestran ahora todo, con el mejor título disponible, y la pantalla de edición se abre con los campos vacíos, listos para la traducción.
  • Renombrar un grupo borraba todas sus traducciones. El guardado no apuntaba a ningún idioma en particular: escribía el mismo título en todas las filas del grupo — y fallaba en cuanto el sitio tenía más de una.
  • Un socio solo podía tener un idioma. La tabla de traducciones del módulo Socios tenía como clave solo el número del socio: un segundo idioma se rechazaba o sobrescribía el primero. Ahora tiene una fila por idioma, como las otras dieciséis tablas de traducción, y describir un socio en un nuevo idioma crea su fila en lugar de no escribir nada.
  • La próxima cita: el día de la semana pegado al número del día. En la casilla de fecha del widget La próxima cita, las tres líneas — día de la semana, número del día, mes — se tocaban, y se solapaban en cuanto un tema aplicaba su tipografía de títulos: las cifras desbordaban una altura de línea más corta que su tinta. Las tres líneas conservan ahora su separación en los siete temas, en modo claro y oscuro. La misma corrección para los grandes números del widget El sitio en cifras.
  • Pulse dibuja por fin sus widgets. El tema preveía su propio aspecto para la casilla de fecha del calendario, los números de El sitio en cifras, la semana y las miniaturas de la galería: ninguno se mostraba, porque la hoja de estilos del widget se sirve después de la del tema y ganaba a igual especificidad. La losa de Pulse (esquinas redondeadas, cifras grandes, gris pizarra) aparece ahora como la mostraba la maqueta.

Lee también

0
Comentarios

Gestionar mis cookies

El sitio solo instala las cookies necesarias para su funcionamiento: no requieren su consentimiento. Los demás servicios pertenecen a otras empresas; solo se cargan si los acepta. Su elección se guarda seis meses, y puede cambiarla en cualquier momento.

Necesarias para el sitio Siempre activas

  • __Host-session Mantiene su sesión iniciada y protege los formularios contra envíos fraudulentos. Hasta que se cierra el navegador; un año con «Recordarme»
  • nf_consent Guarda las elecciones que hace en esta ventana. 6 meses
  • nf_fuseau Muestra las fechas y las horas en su zona horaria. 1 año
  • Almacenamiento del navegador Guarda su elección entre el modo día y el modo noche, y la presentación elegida para la lista de artículos. Hasta que lo vacíe

Vídeos

Los vídeos integrados en las páginas: el reproductor viene de la plataforma, que recibe su dirección IP y puede instalar sus cookies.

Música

Las canciones y listas de reproducción integradas en las páginas: el reproductor viene de la plataforma, que recibe su dirección IP y puede instalar sus cookies.