换页不再白屏一下、注册页的「手机号注册」能点了
- 点站内链接时,旧页面不再先淡成一片白底 —— 之前新页面要等网络往返才到,中间那一下就是白屏。现在旧页面保持原样,换页后新页面照旧淡入、内容依次上滑。
- 注册页的「手机号注册」原来点了像是没反应:它只是把单选按钮选中,页面上的提示文案与「发验证码」的去向都没变。现在切一下就整页重渲染,提示、去向、表单都跟着变。
- 如果站点没有配置短信服务,注册页不会再把你留在「手机号注册」这个空壳上,而是自动退回邮箱注册。
Todas as atualizações do site e do mod do servidor, as mais recentes primeiro
Aqui está o histórico completo do site do CloudRidge e do mod do servidor, das mais recentes para as mais antigas, para você ver quando um recurso chegou ou quando um problema foi corrigido.
#t-xxx continua abrindo a ferramenta direto e no celular a barra rola na horizontal. O texto em degradê saiu de duas cores fixas para 2~6 paradas: toque na barra para adicionar, arraste para mover, selecione uma parada e toque em «Remover esta cor»; as cores são interpoladas caractere por caractere conforme a posição, então códigos § / MiniMessage / tellraw / MOTD mudam juntos, e um MOTD longo demais avisa_admlogin.php de depuração local agora precisa dar 404 em produção (ele transformava um visitante em administrador direto) e o ?to= não pode mais sair do site; ② o ping / dns da página de teste de velocidade entregava um domínio para sondar uma porta e podia ser desviado para a rede interna por DNS rebinding — agora só se conecta ao IP já validado; ③ forjar X-Real-IP / CF-Connecting-IP servia para burlar o limite por IP; agora esses cabeçalhos só são aceitos quando a origem é realmente loopback. Para fechar o ③ de vez é preciso injetar X-CDR-Proxy-Secret no nginx e preencher security.proxy_secret em site/config/config.php — isso mexe na configuração do servidor, então aguardo o seu OK.127.0.0.1:8100 (um endereço interno, usado só na sondagem). Agora mostra o endereço público do mapa web.body.cdr-body::before (conteúdo gerado), e o conteúdo gerado sempre é pintado antes dos filhos reais, então o vídeo cobria o degradê por inteiro e ele não fazia nada.pub-bg-video era ao mesmo tempo a classe do elemento de vídeo e a classe de interruptor colocada em <html>. Assim, toda a regra da camada de vídeo fixa em tela cheia caiu sobre o elemento raiz — a raiz virou position: fixed, a altura da página desabou para uma tela e a roda não tinha o que rolarpointer-events: none é herdado: toda a árvore do documento deixou de receber o mouse, só <html> o capturava, e o botão Voltar ficou inalcançávelpub-bg-on e restringir a regra do elemento a video.pub-bg-video, para que as duas nunca mais se cruzem<html> achando que mediam a camada de vídeoblur(32px) saturate(180%), e nesta página há sete ou oito superfícies de vidro visíveis ao mesmo tempo — cada quadro rolado precisava reamostrar todos os pixels atrás delas/* 6% */ —— comentarios CSS nao se aninham, esse */ fechou o comentario externo cedo demais, a } seguinte fechou a regra cedo demais, e o analisador engoliu todas as regras seguintesbackground: none no mesmo bloco apagava o gradiente do próprio botão primário. Fundo azul-marinho com texto branco virou branco no branco, e o botão desapareceu por completobackground: none também apagava os botões carregando, e as camadas de vidro os excluem —— o botão ficava totalmente transparente nesses segundos. Agora eles recuperam o fundotransition substitui uma declaração inteira e não há como adicioná-la a uma única propriedade; fazer assim exigiria um seletor que também sobrescrevesse as animações de entrada e de hover dos cartões, e a entrada ao rolar passaria de «surgir e subir» para um corte seco. Por isso o script suaviza um único número (a intensidade do brilho) quadro a quadro, e para assim que ele se estabilizabackdrop-filter lá dentro passa a amostrar um fundo vazio — o vidro fosco quebra por completo. Um fade bloco a bloco não tem esse ancestral. Os dois únicos position: fixed do corpo (a camada de fundo e a linha de nome fixada) estão fora desse conjunto, então deslocá-los é segurobackdrop-filter; o mapa é desenhado uma única vez com canvas ao abrir a página e não há script por quadro.cdr-container, que só tem a altura do cabeçalho da página; o alcance do sticky fica preso ali —— passando o cabeçalho, a linha vai embora com o resto. Por isso a linha é position: fixed, e um script insere um espaçador de mesma altura onde ela ficava (fixed tira a linha do fluxo; sem o espaçador a página inteira salta 86px no instante em que ela fixa)/players/zlc) não foram tocadas em um único byte.is-lit no cartão sob o ponteiro, e --glass-spot desce então pela cadeia de herança até cada .stat-mini desse cartão —— um único interruptor virava sete ou oito superfícies acesas. Foi exatamente o que você viu: «meu mouse está em outro lugar, por que acendeu tudo?». A prova: a barra de status da sonda ganhou um contador spot= que não conta quantos elementos têm .is-lit, mas quantos valores --glass-spot calculados não são transparentes —— antes da correção, parar o ponteiro na área vazia do título de um cartão dava lit=1 spot=8/27--glass-spot para transparent por conta própria, cortando a cadeia de herança ali; só a superfície realmente sob o ponteiro recebe .is-lit do script. Depois da mudança: spot=1/27.is-lit e vem depois, então por «o último vence» um simples body.cdr-body .is-lit seria totalmente sobrescrito e o brilho sumiria (medido lit=1 spot=0/27). Por isso a regra .is-lit precisa listar os quatro seletores e elevar sua especificidade. Pular essa etapa faz o bug ir de «acende demais» direto para «não acende nada»requestAnimationFrame: sem isso o primeiro quadro não tem coordenadas e o brilho pisca no centro do cartão antes de saltar para o ponteiro. Agora um .is-lit é uma única superfície acesa —— onde está o ponteiro, ali está a luzradial-gradient pintada no fundo do cartão, lendo --glass-mx / --glass-my conforme o script os escreve. Sem nós extras, sem mexer em contexto de empilhamento e sem atrapalhar o desfoque do cartão. No tema claro não se usa branco, e sim branco-azulado frio: um cartão branco (rgb 229~245) sobe no máximo 6 níveis com luz branca, algo que o olho não percebe.page-head passou de 30px para 160px (cerca de 317px no total), empurrando toda a fileira de cartões brancos para baixo: o avatar, o nome e o selo de nível agora ficam diretamente sobre a imagem do banner —— é o «mostrar mais o fundo» que você pediu. Só altura, sem conteúdo novo, e cai para 72px em telas pequenas. O conteúdo não foi deslocado em bloco de propósito: isso desperdiçaria a parte mais escura da máscara superior e tornaria ilegíveis as linhas esbranquiçadascubic-bezier(.34, 1.56, .64, 1) —— o segundo ponto de controle tem y = 1.56 > 1, então a curva ultrapassa o alvo e retorna; esse excesso é a «mola». CSS puro, sem JavaScript e sem motor de físicaprefers-reduced-motion agora reduz apenas movimento autônomo: a mola do botão (que quica sozinha após soltar) vira uma transição curta comum, mantendo o retorno ao pressionar, enquanto o brilho do ponteiro é mantido —— seguir o ponteiro é manipulação direta: quem se move é o ponteiro, não a página. Sua própria referência de vidro líquido diz exatamente isso: remover o deslocamento, manter o desfoque e o brilho. É também a única maneira de esta máquina ver o brilho: os efeitos de animação do Windows estão desligados aqui (MinAnimate = 0 / DragFullWindows = 0 / VisualFXSetting = 2), e os navegadores relatam isso fielmente como reduce —— condicionar o brilho a isso o esconderia para sempre$pubBgCss !== ''); qualquer outra página —— inclusive perfis sem banner —— não mudou um único byte, e quatro asserções da suíte garantem issobody com background-attachment: fixed. Essa declaração significa «a imagem fica presa à viewport», e ela não é uma camada composta própria —— o navegador precisa reamostrá-la a cada quadro para o backdrop-filter de cada cartão; quando a janela de amostragem e a posição de rolagem se desencontram, a cor salta. Ao mesmo tempo os cartões se movem e a imagem não, então cada cartão translúcido varre a foto inteira. As duas coisas juntas produziam «às vezes escuro, às vezes claro, às vezes normal»body para uma camada dedicada position: fixed (body::before, z-index: -1, pointer-events: none, will-change: transform). Uma camada dedicada pode ser promovida a camada composta, então a fonte de amostragem é um único bitmap já composto durante toda a rolagem--glass-blur --glass-sat --glass-highlight --glass-displacement --glass-noise). Uma nota honesta: refração real com SVG feDisplacementMap não é possível aqui —— Chromium e Safari só aceitam funções de filtro no backdrop-filter, nunca url(#svgfilter); um chanfro interno aproxima esse visual em vez de fingi-lotext-shadow das superfícies de vidro também foi removido —— com o cartão estável ele não ajuda mais e só come os traços dos textos de 12 pxbackground-attachment: fixed no banner: a imagem fica presa à viewport enquanto os cartões rolam por cima dela —— cada cartão translúcido varre a foto inteira: céu escuro deixa o cartão apagado, prédios claros deixam o cartão lavado. O mesmo cartão media de rgb(99,107,125) a rgb(201,197,200) conforme a posição, 100 níveis de diferença/players/zlc) não emitem essa folha de estilo: nem um único byte mudou nelastext-shadow) —— invisível quando o fundo é claro, aparece só quando é escuro: a tipografia passa a carregar o próprio fundo local. É isso que permite chegar aos 34%saturate(180%) e brightness(1.12). O vidro no estilo Apple capta a cor de trás e a realça um pouco; só desfocar dá apenas aparência de fosco00000000-0000-0000-0009-…, e o mod só podia informar um *nome* —— que naquele instante era justamente esse UUID. Na verdade era o birdzhonghuifei jogando no Bedrock, e a linha foi fundida com o seu donobirdzhonghuifei agora estão mais completos‹ mês a mês. Os botões de anterior/próximo e «Hoje» continuam lá, e as listas acompanham quando você navegaTrChat só começa em 2023-09-01, então faltavam trechos do fim de 2024. Três bancos CoreProtect de servidores antigos que nunca tinham sido importados guardavam 34,417 mensagens de 2024-07 a 2024-12; depois de remover as duplicadas, são 229 mensagens líquidas em 37 dias, a mais antiga de 2024-07-11TrChat e outra pelo CoreProtect, seus horários costumam diferir em um segundo e às vezes cruzam o minuto; comparar por minuto deixaria essas algumas dezenas entrarem de novo como duplicatasTrChat havia registrado a maior parte; o que voltou são as linhas soltas que ele perdeu. Ao percorrer esses dias de julho a dezembro de 2024, a conversa aparece mais completaWinter mostra os números dele ao lado dos de Fruity_oxygen, sem precisar adivinhar sob qual nome ele está. De passagem, um defeito antigo foi corrigido: ao ordenar por nome de jogador, o cabeçalho ficava com uma coluna a menos que o corpo e a tabela inteira saía do lugarFruity_oxygen e Winter viram uma linha, ElfinLettuc e Faithe também), enquanto quem nunca vinculou uma conta mantém a própria linha. O selo «N personagens» ao lado do nome mostra quem foi agrupado com quem — o ranking antigo separava a conta secundária da principal e fazia a secundária parecer tempo perdido/accounts/<id>): cada personagem da conta aparece separadamente, com seu tempo de jogo e número de logins, e os números resumidos acima são a soma deles. A página é totalmente pública, sem precisar entrar. De passagem, um dado inválido foi limpo: um personagem apontava para um id de conta inexistentewwwsum mostra honestamente 2024-08-22 e 7Strawberry 2024-03-07, e o total de logins subiu de 291 para 21.766As datas são a data de lançamento de cada versão. Achou um problema novo? Fale no fórum ou procure o dono do servidor.