换页不再白屏一下、注册页的「手机号注册」能点了
- 点站内链接时,旧页面不再先淡成一片白底 —— 之前新页面要等网络往返才到,中间那一下就是白屏。现在旧页面保持原样,换页后新页面照旧淡入、内容依次上滑。
- 注册页的「手机号注册」原来点了像是没反应:它只是把单选按钮选中,页面上的提示文案与「发验证码」的去向都没变。现在切一下就整页重渲染,提示、去向、表单都跟着变。
- 如果站点没有配置短信服务,注册页不会再把你留在「手机号注册」这个空壳上,而是自动退回邮箱注册。
웹사이트와 서버 모드의 업데이트 내역이에요. 최신 것부터 순서대로 있습니다
CloudRidge 웹사이트와 서버 모드의 모든 업데이트를 최신순으로 정리했어요. 어떤 기능이 언제 추가됐는지, 어떤 문제가 언제 고쳐졌는지 돌아볼 때 확인해 보세요.
#t-xxx 를 넣으면 해당 도구를 바로 열 수 있고, 휴대폰에서는 탭 바를 옆으로 밀 수 있습니다. 그라데이션 글자는 고정된 두 색에서 2~6 개 색 표시점으로 바뀌었습니다: 막대를 누르면 하나 추가되고, 끌면 위치가 조정되며, 표시점을 고르고 「이 색 삭제」를 누르면 사라집니다. 색은 위치에 따라 글자 단위로 보간되므로 § 코드 / MiniMessage / tellraw / MOTD 네 가지 결과가 함께 바뀌고, MOTD 가 너무 길면 알려 줍니다_admlogin.php는 이제 운영 환경에서 반드시 404여야 합니다(방문자를 곧바로 관리자로 만들 수 있었습니다). ?to=도 더는 사이트 밖으로 나갈 수 없습니다. ② 속도 측정 페이지의 ping / dns는 도메인 이름을 넘겨 포트를 확인하는 구조라 DNS 리바인딩으로 내부망을 탐색당할 수 있었습니다. 이제는 이미 검증한 IP에만 접속합니다. ③ 위조한 X-Real-IP / CF-Connecting-IP로 IP 기준 속도 제한을 우회할 수 있었습니다. 이제는 요청 출처가 정말 루프백일 때만 이런 헤더를 믿습니다. ③을 완전히 막으려면 nginx에서 X-CDR-Proxy-Secret를 주입하고 site/config/config.php에 security.proxy_secret를 채워야 합니다 —— 서버 설정을 건드리는 일이라 확인해 주시면 진행하겠습니다.127.0.0.1:8100(내부 주소, 연결 확인용)으로 표시되었습니다. 이제 공개된 웹 지도 주소를 보여줍니다.body.cdr-body::before(생성 콘텐츠)에 있었는데, 생성 콘텐츠는 항상 실제 자식보다 먼저 그려지므로 동영상이 그라데이션을 통째로 덮어 아무 효과도 없었습니다.pub-bg-video가 동영상 요소의 클래스이면서 동시에 <html>에 붙이는 스위치 클래스로도 쓰여, 화면을 가득 채우는 고정 동영상 레이어 규칙이 루트 요소에 적용됐습니다. 루트가 position: fixed가 되면서 페이지 높이가 한 화면으로 무너졌고, 휠로 움직일 여지가 사라졌습니다pointer-events: none이 상속된다는 것입니다. 문서 트리 전체가 마우스를 받지 못하고 <html>만 반응해서 「뒤로」 버튼을 누를 수 없었습니다pub-bg-on으로 바꾸고 요소 규칙을 video.pub-bg-video로 좁히는 것입니다. 다시는 같은 이름이 충돌하지 않습니다<html>을 재고 있었습니다blur(32px) saturate(180%)가 걸려 있고, 이 페이지는 한 번에 7~8개의 유리 면이 보여서 스크롤할 때마다 그 뒤 픽셀을 전부 다시 샘플링했습니다/* 6% */ 라고 썼는데 —— CSS 주석은 중첩되지 않습니다 —— 그 */ 가 바깥 주석을 일찍 닫고, 뒤따르는 } 가 규칙을 일찍 닫아 파서가 이후 규칙을 전부 삼켰습니다background: none 이 주 버튼 자체의 그라데이션을 지웠습니다. 남색 바탕에 흰 글자가 흰 바탕에 흰 글자가 되어 버튼이 통째로 사라졌습니다background: none 이 로딩 중 버튼까지 지웠고 유리 층은 그것들을 제외하므로, 로딩 중 몇 초 동안 버튼이 완전히 투명했습니다. 이제 로딩 중 버튼도 배경이 돌아옵니다transition은 선언을 통째로 바꾸는 규칙이라 "한 속성에만 전환을 붙이는" 방법이 없습니다. 그렇게 하려면 카드 등장 애니메이션과 호버 애니메이션까지 덮어쓰는 선택자가 필요하고, 스크롤 등장이 "페이드 + 떠오름"에서 뚝 끊기는 전환으로 바뀝니다. 그래서 스크립트가 숫자 하나(빛의 세기)를 매 프레임 완만하게 움직이고, 다 되면 멈추는 방식으로 바꿨습니다backdrop-filter 는 빈 배경을 샘플링해 흐린 유리가 완전히 깨집니다. 블록을 각각 페이드하면 그런 조상이 생기지 않습니다. 본문에서 position: fixed 인 것은 배경 레이어와 고정되는 이름 줄 두 개뿐이고 둘 다 이 집합 밖이라 이동해도 안전합니다backdrop-filter 를 쓰며, 맵은 페이지를 열 때 canvas 로 한 번만 그립니다. 프레임마다 도는 스크립트는 없습니다.cdr-container이고 높이가 페이지 헤드만큼밖에 되지 않습니다. 그래서 sticky의 이동 범위가 그 안에 갇혀 헤드를 지나면 함께 사라집니다. 그래서 position: fixed로 바꾸고, 스크립트로 원래 자리에 같은 높이의 자리표시자를 넣었습니다(fixed는 문서 흐름에서 벗어나므로 넣지 않으면 고정되는 순간 페이지 전체가 86px 튀어 오릅니다)/players/zlc)는 단 1바이트도 건드리지 않았습니다.is-lit을 붙이면 --glass-spot이 상속 체인을 따라 그 카드 안의 모든 .stat-mini로 전달됩니다 —— 스위치 하나가 일곱여덟 개의 빛나는 면이 되었습니다. 의뢰하신 「마우스는 다른 곳에 있는데 왜 전부 켜지나요」가 바로 이것입니다. 증거: 프로브 노란 막대에 spot= 카운터를 추가했습니다. 이것은 .is-lit의 개수가 아니라 계산된 --glass-spot이 투명이 아닌 요소의 수를 셉니다 —— 수정 전에는 포인터를 카드 제목 여백에 두면 lit=1 spot=8/27이었습니다--glass-spot을 transparent로 되돌려 상속 체인을 거기서 끊습니다. 포인터가 실제로 올라간 면만 스크립트가 .is-lit을 붙입니다. 수정 후 spot=1/27.is-lit 규칙과 특이도가 같고 뒤에 쓰여 있습니다 —— 「나중 것이 이긴다」에 따라 순수한 body.cdr-body .is-lit은 통째로 덮여 하이라이트가 완전히 사라집니다(실측 lit=1 spot=0/27). 그래서 .is-lit 규칙은 네 선택자를 모두 나열해 특이도를 올려야 합니다. 이 단계를 빠뜨리면 「너무 많이 켜짐」에서 곧바로 「전혀 안 켜짐」이 됩니다requestAnimationFrame만 기다리지 않고 새 요소에 들어갈 때 동기적으로 한 번 쓰도록 바꿨습니다. 그렇지 않으면 첫 프레임에 좌표가 없어 빛이 카드 가운데에 잠깐 나타났다가 포인터로 튑니다. 이제 하나의 .is-lit이 하나의 빛나는 면입니다 —— 포인터가 있는 곳이 곧 빛나는 곳입니다radial-gradient 한 겹이며, 스크립트가 실시간으로 쓰는 --glass-mx / --glass-my를 읽습니다. 노드를 늘리지 않고, 스태킹 컨텍스트도 건드리지 않으며, 카드의 블러도 방해하지 않습니다. 라이트 테마에서 쓰는 것은 흰색이 아니라 차가운 청백색입니다: 흰 카드(rgb 229~245)에 흰빛을 더해 봐야 최대 6단계밖에 올라가지 않아 눈에 띄지 않습니다.page-head의 아래 패딩을 30px에서 160px로 (전체 약 317px). 흰 카드 줄이 통째로 내려가 아바타·이름·레벨 배지가 배너 이미지 위에 올라갑니다 —— 이것이 「배경을 더 보여주기」입니다. 높이만 키우고 내용은 늘리지 않았습니다. 작은 화면에서는 72px로 줄어듭니다. 내용을 통째로 내리지 않은 이유는 위쪽의 가장 어두운 마스크가 무의미해져 하얗게 바뀐 줄이 읽기 어려워지기 때문입니다cubic-bezier(.34, 1.56, .64, 1)로 돌아옵니다 —— 두 번째 제어점의 y = 1.56 > 1이라 곡선이 목표를 지나쳤다가 되돌아옵니다. 그 초과분이 「튕김」입니다. 순수 CSS이며 JS도 물리 엔진도 쓰지 않습니다prefers-reduced-motion 폴백은 이제 「자율적 움직임」만 줄입니다: 버튼 스프링(놓은 뒤 스스로 튕기는 움직임)은 평범한 짧은 트랜지션으로 바뀌고 누르는 피드백은 남습니다. 반면 포인터 하이라이트는 유지합니다 —— 포인터 추적은 직접 조작이고, 움직이는 것은 포인터 자체이지 페이지가 아닙니다. 의뢰하신 리퀴드 글래스 자료에도 「displacement를 빼고 blur + 하이라이트는 남긴다」고 적혀 있습니다. 이 머신에서 하이라이트를 볼 수 있는 유일한 방법이기도 합니다: Windows 애니메이션 효과가 꺼져 있어(MinAnimate = 0 / DragFullWindows = 0 / VisualFXSetting = 2) 브라우저가 이를 그대로 reduce로 보고합니다 —— 함께 꺼 버리면 영영 볼 수 없습니다$pubBgCss !== '' 안에 있습니다). 나머지 페이지 —— 배너 없는 프로필 포함 —— 는 1바이트도 바뀌지 않았습니다. 테스트 스위트에는 이를 지키는 assertion이 4개 있습니다body에 background-attachment: fixed로 걸어 두었습니다. 이 선언은 "이미지를 뷰포트에 고정한다"는 뜻이고, 독립된 합성 레이어가 아닙니다 —— 브라우저는 카드의 backdrop-filter를 위해 매 프레임 다시 샘플링해야 하며, 샘플링 범위와 스크롤 위치가 어긋나면 색이 튑니다. 게다가 카드는 움직이고 이미지는 멈춰 있으니 반투명 카드가 사진 전체를 훑습니다. 이 둘이 겹쳐서 "어떨 땐 진하고 어떨 땐 옅고 어떨 땐 정상"이 되었습니다body에서 전용 position: fixed 레이어(body::before, z-index: -1, pointer-events: none, will-change: transform)로 옮겼습니다. 전용 레이어는 합성 레이어로 승격될 수 있어 스크롤 내내 샘플링 원본이 이미 합성된 하나의 비트맵이 됩니다--glass-blur --glass-sat --glass-highlight --glass-displacement --glass-noise). 솔직히 한 가지: 진짜 SVG feDisplacementMap 굴절은 불가능합니다 —— Chromium과 Safari의 backdrop-filter는 필터 함수만 받고 url(#svgfilter)는 받지 않기 때문에, 내부 굴절 베벨로 그 느낌을 근사했습니다text-shadow 흰 번짐을 제거했습니다 —— 카드가 안정된 지금은 도움이 되지 않고 12px 글자의 획만 먹습니다background-attachment: fixed를 써서 이미지가 뷰포트에 고정되고 카드만 스크롤됩니다 —— 그래서 반투명 카드가 사진 전체를 훑게 되어, 어두운 하늘 위에서는 어둡게, 밝은 건물 위에서는 하얗게 뜹니다. 같은 카드가 스크롤 위치에 따라 rgb(99,107,125)에서 rgb(201,197,200)까지 100단계나 흔들렸습니다/players/zlc)는 이 유리 스타일을 아예 출력하지 않으므로 단 1바이트도 바뀌지 않았습니다text-shadow)을 더했습니다 —— 바탕이 밝으면 보이지 않고 어두울 때만 드러나므로, 글자가 자기만의 국소 바탕을 갖는 셈입니다. 그래서 34%까지 내려도 안전합니다saturate(180%) 와 brightness(1.12) 를 더했습니다. 애플식 유리는 뒤의 색을 끌어올리는 방식이고, 흐리게만 하면 그냥 반투명 유리에 그칩니다00000000-0000-0000-0009-… 라는 자리표시자 영역이었고, 모드는 「이름」만 보고할 수 있었는데 —— 그 순간의 이름이 마침 그 UUID 였습니다. 실체는 birdzhonghuifei 가 베드락으로 놀던 기간이며, 본인 행으로 병합했습니다birdzhonghuifei 의 숫자는 더 완전해졌습니다‹를 눌러 한 달씩 넘길 필요가 없습니다. 앞뒤 버튼과 「오늘」은 그대로이고, 넘길 때 드롭다운도 함께 따라옵니다TrChat 플러그인 로그는 2023-09-01부터만 기록되어 2024년 하반기 일부가 비어 있었습니다. 한 번도 가져오지 않았던 예전 서버의 CoreProtect 데이터베이스 3개에서 2024-07~2024-12 채팅 34,417건을 찾아냈고, 중복을 제거한 뒤 229건의 발언을 복원했습니다(37일에 걸쳐 있으며 가장 이른 것은 2024-07-11)TrChat과 CoreProtect에 각각 기록되고 타임스탬프는 보통 1초 차이, 때로는 분 경계를 넘습니다. 분 단위로 비교하면 그 수십 건이 새 발언으로 잘못 다시 들어옵니다TrChat이 대부분의 대화를 기록했고, 되찾은 것은 빠졌던 몇 줄입니다. 2024년 7~12월의 이 날짜를 열면 당시 대화가 더 온전하게 보입니다Winter를 검색하면 Fruity_oxygen 옆에서 자기 수치를 바로 볼 수 있어, 누구 아래에 숨어 있는지 짐작할 필요가 없습니다. 오래된 버그도 함께 고쳤습니다: 플레이어 이름으로 정렬하면 머리글이 본문보다 한 열 적어 표 전체가 어긋났습니다Fruity_oxygen과 Winter가 한 줄, ElfinLettuc과 Faithe가 한 줄). 계정을 연결한 적 없는 사람은 각자 한 줄입니다. 이름 옆의 「N개 캐릭터」 배지로 누가 어디에 합쳐졌는지 볼 수 있습니다 — 예전에는 본캐와 부캐가 다른 줄로 갈라져 부캐의 시간이 헛된 것처럼 보였습니다/accounts/번호)를 새로 만들었습니다. 계정에 속한 캐릭터를 하나씩 나열해 각자의 플레이 시간과 로그인 횟수를 보여주고, 위쪽 요약 수치는 이들을 더한 값입니다. 이 페이지는 완전 공개라 로그인 없이도 볼 수 있습니다. 존재하지 않는 계정 번호를 가리키던 잘못된 데이터 한 건도 함께 정리했습니다wwwsum은 2024-08-22, 7Strawberry는 2024-03-07로 정확히 표시되고, 로그인 합계는 291에서 21,766이 되었습니다날짜는 해당 버전의 공개일이에요. 새로운 문제를 발견하면 게시판에 알려 주시거나 서버 관리자에게 직접 연락해 주세요.