换页不再白屏一下、注册页的「手机号注册」能点了
- 点站内链接时,旧页面不再先淡成一片白底 —— 之前新页面要等网络往返才到,中间那一下就是白屏。现在旧页面保持原样,换页后新页面照旧淡入、内容依次上滑。
- 注册页的「手机号注册」原来点了像是没反应:它只是把单选按钮选中,页面上的提示文案与「发验证码」的去向都没变。现在切一下就整页重渲染,提示、去向、表单都跟着变。
- 如果站点没有配置短信服务,注册页不会再把你留在「手机号注册」这个空壳上,而是自动退回邮箱注册。
Todas las actualizaciones del sitio y del mod del servidor, las más recientes primero
Aquí está el historial completo del sitio de CloudRidge y del mod del servidor, de lo más reciente a lo más antiguo, para que puedas ver cuándo llegó una función o cuándo se arregló un fallo.
#t-xxx sigue abriendo esa herramienta directamente y en el móvil la barra se desliza en horizontal. El texto degradado pasó de dos colores fijos a 2~6 paradas: pulsa la barra para añadir una, arrástrala para moverla, selecciona una parada y pulsa «Quitar este color»; los colores se interpolan carácter a carácter según la posición, así que los códigos § / MiniMessage / tellraw / MOTD cambian juntos, y si el MOTD es demasiado largo te avisa_admlogin.php de depuración local ahora debe dar 404 en producción (podía convertir a un visitante en administrador directamente) y ?to= ya no puede salir del sitio; ② el ping / dns de la página de test de velocidad entregaba un nombre de dominio para sondear un puerto, y un DNS rebinding podía desviarlo a la red interna; ahora solo se conecta a la IP ya validada; ③ falsificar X-Real-IP / CF-Connecting-IP servía para saltarse el límite por IP; ahora esas cabeceras solo se aceptan cuando el origen es realmente loopback. Para cerrar ③ del todo hay que inyectar X-CDR-Proxy-Secret en nginx y rellenar security.proxy_secret en site/config/config.php — eso toca la configuración del servidor, así que espera tu visto bueno.127.0.0.1:8100 (una dirección interna, solo para la sonda). Ahora muestra la dirección pública del mapa web.body.cdr-body::before (contenido generado), y el contenido generado siempre se pinta antes que los hijos reales, así que el vídeo tapaba el degradado por completo y este no hacía nada.pub-bg-video era a la vez la clase del elemento de vídeo y la clase de interruptor puesta en <html>. Así, toda la regla de la capa de vídeo fija a pantalla completa cayó sobre el elemento raíz — la raíz pasó a position: fixed, la altura de la página se desplomó a una pantalla y la rueda no tenía nada que desplazarpointer-events: none se hereda: todo el árbol del documento dejó de recibir el ratón, solo <html> lo captaba, y el botón Atrás quedó inalcanzablepub-bg-on y acotar la regla del elemento a video.pub-bg-video, para que nunca vuelvan a coincidir<html> creyendo medir la capa de vídeoblur(32px) saturate(180%), y en esta página se ven siete u ocho superficies de cristal a la vez, así que cada fotograma al desplazar tenía que remuestrear todos los píxeles de detrás/* 6% */ —— los comentarios CSS no se anidan, ese */ cerro el comentario exterior antes de tiempo, la } siguiente cerro la regla antes de tiempo, y el analizador se trago todas las reglas posterioresbackground: none en el mismo bloque borraba el degradado propio del botón principal. Un fondo azul marino con texto blanco pasó a ser blanco sobre blanco, y el botón desapareció por completobackground: none borraba también los botones en carga, y las capas de cristal los excluyen —— el botón quedaba totalmente transparente durante esos segundos. Ahora recuperan su fondotransition reemplaza una declaración completa y no hay forma de añadirla a una sola propiedad; hacerlo así exigiría un selector que también pisara las animaciones de entrada y de hover de las tarjetas, y la aparición al desplazarse pasaría de «fundido y subida» a un corte seco. Por eso el script suaviza un único número (la intensidad del brillo) fotograma a fotograma, y se detiene en cuanto se asientabackdrop-filter de dentro pasa a muestrear un fondo vacío: el cristal esmerilado se rompe por completo. Un fundido bloque a bloque no tiene ese ancestro. Los dos únicos position: fixed del cuerpo (la capa de fondo y la fila de nombre fijada) están fuera de ese conjunto, así que desplazarlos es segurobackdrop-filter; el mapa se dibuja una sola vez con canvas al abrir la página y no hay script por fotograma.cdr-container, que solo mide lo que la cabecera de la página; el recorrido de sticky queda atrapado ahí —— pasada la cabecera, la fila se va con todo lo demás. Por eso la fila usa position: fixed y un script inserta un marcador de la misma altura donde estaba (fixed la saca del flujo; sin el marcador, toda la página salta 86px en el momento de fijarse)/players/zlc) no se tocaron ni un byte.is-lit en la tarjeta bajo el puntero, y --glass-spot baja entonces por la cadena de herencia hasta cada .stat-mini de esa tarjeta —— un solo interruptor se convertía en siete u ocho superficies iluminadas. Eso es exactamente lo que viste: «mi ratón está en otro sitio, ¿por qué se iluminó todo?». La prueba: la barra de estado de la sonda ganó un contador spot= que no cuenta cuántos elementos tienen .is-lit, sino cuántos valores --glass-spot calculados no son transparentes —— antes del arreglo, posar el puntero en la zona vacía del título de una tarjeta daba lit=1 spot=8/27--glass-spot a transparent por sí misma, de modo que la cadena de herencia se corta ahí; solo la superficie sobre la que está realmente el puntero recibe .is-lit del script. Tras el cambio: spot=1/27.is-lit y está escrito después, así que por «gana el último» un simple body.cdr-body .is-lit quedaría totalmente anulado y el reflejo desaparecería (medido lit=1 spot=0/27). Por eso la regla .is-lit debe enumerar los cuatro selectores y subir su especificidad. Si se omite este paso, el fallo pasa de «se ilumina demasiado» a «no se ilumina nada»requestAnimationFrame: si no, el primer fotograma no tiene coordenadas y el resplandor aparece en el centro de la tarjeta antes de saltar al puntero. Ahora un .is-lit es una sola superficie iluminada —— donde está el puntero, allí está la luzradial-gradient pintada en el fondo de la tarjeta, que lee --glass-mx / --glass-my tal como los escribe el script. Sin nodos extra, sin tocar contextos de apilamiento y sin interferir con el desenfoque de la tarjeta. En tema claro no se usa blanco sino blanco azulado frío: una tarjeta blanca (rgb 229~245) solo sube 6 niveles con luz blanca, algo que el ojo no percibe.page-head pasó de 30px a 160px (unos 317px en total), lo que empuja toda la fila de tarjetas blancas hacia abajo: el avatar, el nombre y la insignia de nivel ahora se apoyan directamente en la imagen del banner —— eso es «mostrar más el fondo». Solo altura, sin contenido nuevo, y se reduce a 72px en pantallas pequeñas. El contenido no se desplazó en bloque a propósito: eso desperdiciaría la parte más oscura de la máscara superior y volvería ilegibles las líneas blanqueadascubic-bezier(.34, 1.56, .64, 1) —— el segundo punto de control tiene y = 1.56 > 1, así que la curva se pasa del objetivo y regresa; ese exceso es el «muelle». CSS puro, sin JavaScript ni motor físicoprefers-reduced-motion ahora reduce solo el movimiento autónomo: el muelle del botón (que rebota solo tras soltarlo) pasa a una transición corta normal, manteniendo la respuesta al pulsar, mientras que el reflejo del puntero se conserva —— seguir al puntero es manipulación directa: se mueve el puntero, no la página. Tu propia referencia de cristal líquido dice exactamente eso: quitar el desplazamiento, conservar el desenfoque y el reflejo. Además es la única forma de que esta máquina vea el reflejo: los efectos de animación de Windows están desactivados aquí (MinAnimate = 0 / DragFullWindows = 0 / VisualFXSetting = 2), y los navegadores lo informan con veracidad como reduce —— condicionar el reflejo a eso lo ocultaría para siempre$pubBgCss !== ''); cualquier otra página —— incluidos los perfiles sin banner —— no cambió ni un byte, y cuatro aserciones de la suite lo vigilanbody con background-attachment: fixed. Esa declaración significa «la imagen queda fijada al viewport», y no es una capa compuesta propia —— el navegador debe remuestrearla en cada fotograma para el backdrop-filter de cada tarjeta; cuando la ventana de muestreo y la posición de desplazamiento se desincronizan, el color salta. Además, las tarjetas se mueven mientras la imagen no, así que cada tarjeta translúcida recorre toda la foto. Ambas cosas juntas producían «a veces oscuro, a veces claro, a veces normal»body a una capa dedicada position: fixed (body::before, z-index: -1, pointer-events: none, will-change: transform). Una capa dedicada puede promoverse a capa compuesta, de modo que la fuente de muestreo es un único bitmap ya compuesto durante todo el desplazamiento--glass-blur --glass-sat --glass-highlight --glass-displacement --glass-noise). Una nota honesta: la refracción real con SVG feDisplacementMap no es posible aquí —— Chromium y Safari solo aceptan funciones de filtro en backdrop-filter, nunca url(#svgfilter); un chaflán interior aproxima ese aspecto en lugar de fingirlotext-shadow de las superficies de cristal —— con la tarjeta estable ya no ayuda y solo se come los trazos de los textos de 12 pxbackground-attachment: fixed para el banner: la imagen queda fijada al viewport mientras las tarjetas se desplazan sobre ella —— cada tarjeta translúcida recorre toda la foto: con cielo oscuro se apaga, con edificios claros se lava. La misma tarjeta medía entre rgb(99,107,125) y rgb(201,197,200) según la posición, 100 niveles de diferencia/players/zlc) no emiten esta hoja de estilos en absoluto: no ha cambiado ni un byte en ellastext-shadow) —— invisible cuando el fondo es claro, solo aparece cuando es oscuro: la tipografía lleva su propio fondo local. Eso es lo que permite bajar al 34 %saturate(180%) y brightness(1.12). El cristal al estilo Apple recoge el color de detrás y lo realza un poco; desenfocar sin más solo da aspecto esmerilado00000000-0000-0000-0009-…, y el mod solo podía informar de un *nombre* —— que en ese instante era justo ese UUID. En realidad era birdzhonghuifei jugando en Bedrock, y se ha fusionado con su dueñobirdzhonghuifei son ahora más completas‹ mes a mes. Los botones de anterior/siguiente y «Hoy» siguen ahí, y los desplegables acompañan al navegarTrChat solo empieza el 2023-09-01, así que faltaban tramos de finales de 2024. Tres bases CoreProtect de servidores antiguos que nunca se habían importado contenían 34,417 mensajes de 2024-07 a 2024-12; tras eliminar duplicados son 229 mensajes netos repartidos en 37 días, el más antiguo del 2024-07-11TrChat y CoreProtect por separado, sus marcas de tiempo suelen diferir un segundo y a veces cruzan el minuto; comparar por minuto dejaría pasar esos pocos cientos como duplicadosTrChat había registrado la mayor parte; lo que vuelve son las líneas sueltas que se le escaparon. Al recorrer esos días de julio a diciembre de 2024 la conversación se ve más completaWinter muestra sus cifras junto a las de Fruity_oxygen, sin tener que adivinar bajo qué nombre se esconde. De paso se corrigió un fallo antiguo: al ordenar por nombre de jugador, el encabezado tenía una columna menos que el cuerpo y toda la tabla se desalineabaFruity_oxygen y Winter se fusionan en una fila, ElfinLettuc y Faithe en otra), mientras que quien nunca vinculó una cuenta conserva su propia fila. La insignia «N personajes» junto al nombre indica quién se agrupó con quién: la lista anterior separaba una cuenta secundaria de su principal y hacía parecer que la secundaria había jugado en vano/accounts/<id>): cada personaje de la cuenta aparece por separado con su tiempo de juego y su número de inicios de sesión, y las cifras resumidas de arriba son su suma. La página es totalmente pública, sin necesidad de iniciar sesión. De paso se limpió un dato erróneo: un personaje apuntaba a un identificador de cuenta inexistentewwwsum dice con honestidad 2024-08-22 y 7Strawberry 2024-03-07, y el total de inicios pasó de 291 a 21.766Las fechas son la fecha de publicación de cada versión. Si encuentras un problema nuevo, cuéntanoslo en el foro o contacta directamente con el dueño del servidor.