release: bump version to 0.72.0
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / delivery (push) Has been cancelled
release / images (push) Has been cancelled

This commit is contained in:
linkong
2026-06-29 14:05:06 +08:00
parent 3265d22af5
commit 19d5ac0fee
60 changed files with 3702 additions and 678 deletions

View File

@@ -254,19 +254,31 @@
.earth-toolbar-btn .icon,
.earth-toolbar-hub-btn .material-symbols-rounded {
position: relative;
z-index: 1;
z-index: 4;
line-height: 1;
}
.earth-toolbar-btn .icon {
.earth-toolbar-btn .icon,
.earth-toolbar-hub-btn .material-symbols-rounded,
.earth-zoom-btn > span {
display: inline-flex;
align-items: center;
justify-content: center;
transition: transform 0.16s ease, opacity 0.16s ease;
color: rgba(243, 244, 246, 0.9);
text-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.5);
transition:
transform 0.4s cubic-bezier(0.16, 1, 0.3, 1),
color 0.3s ease,
opacity 0.16s ease;
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
.earth-zoom-btn > span {
position: relative;
z-index: 4;
}
.earth-toolbar-btn .material-symbols-rounded,
.earth-toolbar-hub-btn .material-symbols-rounded {
font-size: calc(21px * var(--toolbar-scale));
@@ -299,22 +311,34 @@
--btn-scale: 1;
--press-offset: 0px;
--float-offset: 0px;
--mouse-x: 0.5;
--mouse-y: 0.5;
--toolbar-atmosphere-color: rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.25);
--toolbar-atmosphere-hover: rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.55);
position: relative;
isolation: isolate;
transform-style: preserve-3d;
transform-origin: center center;
will-change: transform, box-shadow;
z-index: 2;
border: 1px solid rgba(255, 255, 255, 0.14);
border: none;
outline: none;
background:
radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.085), transparent 38%),
rgba(255, 255, 255, var(--toolbar-glass-opacity));
radial-gradient(
circle at 35% 30%,
rgba(255, 255, 255, 0.16) 0%,
rgba(255, 255, 255, 0.02) 40%,
rgba(15, 23, 42, 0.35) 75%,
rgba(3, 7, 18, 0.85) 100%
);
box-shadow:
0 8px 28px rgba(0, 0, 0, 0.38),
inset 0 1.5px 2px rgba(255, 255, 255, 0.22),
inset 0 -1.5px 2px rgba(0, 0, 0, 0.28);
backdrop-filter: blur(var(--toolbar-glass-blur, 16px)) saturate(108%) brightness(0.92);
-webkit-backdrop-filter: blur(var(--toolbar-glass-blur, 16px)) saturate(108%) brightness(0.92);
0 8px 24px -4px rgba(0, 0, 0, 0.65),
inset 0 0 1.5px 1.2px rgba(255, 255, 255, 0.15),
inset 0 1px 0.5px 0.2px rgba(255, 255, 255, 0.45),
inset 0 -3px 8px rgba(255, 255, 255, 0.03),
inset 0 6px 12px rgba(255, 255, 255, 0.06);
backdrop-filter: blur(var(--toolbar-glass-blur, 16px)) saturate(130%);
-webkit-backdrop-filter: blur(var(--toolbar-glass-blur, 16px)) saturate(130%);
transform:
translate3d(
@@ -325,121 +349,182 @@
scale(var(--btn-scale));
transition:
transform 0.22s ease,
box-shadow 0.22s ease,
background 0.22s ease,
transform 0.4s cubic-bezier(0.16, 1, 0.3, 1),
box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1),
background 0.4s cubic-bezier(0.16, 1, 0.3, 1),
opacity 0.18s ease;
}
.liquid-glass-surface::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
top: 4%;
left: 15%;
width: 70%;
height: 32%;
border-radius: 50% 50% 45% 45% / 65% 65% 35% 35%;
background:
radial-gradient(circle at 32% 20%, rgba(255, 255, 255, 0.13), transparent 34%),
radial-gradient(circle at 54% 54%, rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.035), transparent 58%);
linear-gradient(
to bottom,
rgba(255, 255, 255, 0.38) 0%,
rgba(255, 255, 255, 0.1) 50%,
rgba(255, 255, 255, 0) 100%
);
filter: blur(0.4px);
opacity: 1;
pointer-events: none;
transform: translate3d(calc(var(--elastic-x) * 0.08), calc(var(--elastic-y) * 0.08), 0);
transition: opacity 0.18s ease, transform 0.18s ease;
transform:
translate(
calc((var(--mouse-x, 0.5) - 0.5) * 5px),
calc((var(--mouse-y, 0.5) - 0.5) * 3px)
);
transform-origin: top center;
transition: transform 0.25s ease-out;
z-index: 3;
}
.liquid-glass-surface::after {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
bottom: -10%;
left: 12%;
width: 76%;
height: 35%;
border-radius: 50%;
background:
radial-gradient(circle at 50% 50%, transparent 58%, rgba(0, 0, 0, 0.1) 100%);
box-shadow:
inset 0 0 0 0.5px rgba(255, 255, 255, 0.06);
opacity: 1;
radial-gradient(
ellipse at bottom,
var(--toolbar-atmosphere-color) 0%,
rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.02) 70%,
rgba(0, 0, 0, 0) 100%
);
filter: blur(1px);
opacity: 0.9;
pointer-events: none;
transition: opacity 0.18s ease, box-shadow 0.18s ease;
transform:
translate(
calc((var(--mouse-x, 0.5) - 0.5) * -3px),
calc((var(--mouse-y, 0.5) - 0.5) * -2px)
);
transition:
transform 0.25s ease-out,
opacity 0.3s ease;
z-index: 1;
}
.earth-toolbar-hub-btn.liquid-glass-surface {
background:
radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.095), transparent 40%),
rgba(255, 255, 255, 0.07);
radial-gradient(
circle at 35% 30%,
rgba(255, 255, 255, 0.18) 0%,
rgba(255, 255, 255, 0.025) 42%,
rgba(15, 23, 42, 0.32) 74%,
rgba(3, 7, 18, 0.82) 100%
);
box-shadow:
0 9px 30px rgba(0, 0, 0, 0.4),
inset 0 1.5px 2px rgba(255, 255, 255, 0.24),
inset 0 -1.5px 2px rgba(0, 0, 0, 0.3);
0 9px 26px -4px rgba(0, 0, 0, 0.68),
inset 0 0 1.8px 1.3px rgba(255, 255, 255, 0.17),
inset 0 1px 0.5px 0.2px rgba(255, 255, 255, 0.5),
inset 0 -3px 8px rgba(255, 255, 255, 0.04),
inset 0 7px 13px rgba(255, 255, 255, 0.07);
}
.liquid-glass-surface:hover {
--btn-scale: 1.03;
--press-offset: -1px;
--btn-scale: 1.05;
--press-offset: -3px;
background:
radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.14), transparent 40%),
radial-gradient(circle at 52% 52%, rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.12), transparent 62%),
rgba(255, 255, 255, 0.085);
border-color: rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.42);
radial-gradient(
circle at 35% 30%,
rgba(255, 255, 255, 0.22) 0%,
rgba(255, 255, 255, 0.04) 40%,
rgba(15, 23, 42, 0.25) 75%,
rgba(3, 7, 18, 0.8) 100%
);
box-shadow:
0 12px 40px rgba(0, 0, 0, 0.44),
inset 0 1.5px 3px rgba(255, 255, 255, 0.36),
inset 0 -1.5px 3px rgba(0, 0, 0, 0.2);
}
.liquid-glass-surface:hover::before {
opacity: 1;
background:
radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.2), transparent 36%),
radial-gradient(circle at 52% 52%, rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.14), transparent 62%);
transform: translate3d(calc(var(--elastic-x) * 0.08), calc(var(--elastic-y) * 0.08 - 1px), 0);
0 14px 28px -6px rgba(0, 0, 0, 0.8),
0 0 15px -1px var(--toolbar-atmosphere-hover),
inset 0 0 1.8px 1.2px rgba(255, 255, 255, 0.22),
inset 0 1px 0.5px 0.2px rgba(255, 255, 255, 0.65),
inset 0 -3px 8px rgba(255, 255, 255, 0.04),
inset 0 6px 12px rgba(255, 255, 255, 0.1);
}
.liquid-glass-surface:hover::after {
opacity: 1;
box-shadow:
inset 0 0 0 0.75px rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.16);
}
.liquid-glass-surface:hover .icon,
.earth-toolbar-hub-btn.liquid-glass-surface:hover > .material-symbols-rounded,
.earth-zoom-btn.liquid-glass-surface:hover > span {
color: #ffffff;
transform: scale(1.06);
}
.liquid-glass-surface:active,
.liquid-glass-surface.is-pressed {
--btn-scale: 0.94;
--press-offset: 3px;
--btn-scale: 0.95;
--press-offset: -1px;
transition: transform 0.1s cubic-bezier(0.16, 1, 0.3, 1);
box-shadow:
0 4px 14px rgba(0, 0, 0, 0.28),
inset 0 1px 2px rgba(255, 255, 255, 0.18),
inset 0 -1px 3px rgba(0, 0, 0, 0.34);
0 5px 12px -3px rgba(0, 0, 0, 0.9),
0 0 8px -2px var(--toolbar-atmosphere-hover),
inset 0 0 1.5px 1.2px rgba(255, 255, 255, 0.18),
inset 0 1px 0.5px 0.2px rgba(255, 255, 255, 0.55),
inset 0 -1px 4px rgba(255, 255, 255, 0.01);
}
.liquid-glass-surface.active {
background:
radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.14), transparent 40%),
radial-gradient(circle at 52% 52%, rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.13), transparent 62%),
rgba(255, 255, 255, 0.09);
border-color: rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.42);
radial-gradient(
circle at 35% 30%,
rgba(255, 255, 255, 0.24) 0%,
rgba(255, 255, 255, 0.045) 40%,
rgba(15, 23, 42, 0.24) 75%,
rgba(3, 7, 18, 0.78) 100%
);
box-shadow:
0 12px 40px rgba(0, 0, 0, 0.46),
inset 0 1.5px 3px rgba(255, 255, 255, 0.38),
inset 0 -1.5px 3px rgba(0, 0, 0, 0.2);
0 13px 28px -6px rgba(0, 0, 0, 0.78),
0 0 16px -1px var(--toolbar-atmosphere-hover),
inset 0 0 1.9px 1.25px rgba(255, 255, 255, 0.24),
inset 0 1px 0.5px 0.2px rgba(255, 255, 255, 0.66),
inset 0 -3px 8px rgba(255, 255, 255, 0.04),
inset 0 6px 12px rgba(255, 255, 255, 0.11);
}
.liquid-glass-surface.active:hover {
background:
radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.16), transparent 40%),
radial-gradient(circle at 52% 52%, rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.17), transparent 64%),
rgba(255, 255, 255, 0.1);
radial-gradient(
circle at 35% 30%,
rgba(255, 255, 255, 0.28) 0%,
rgba(255, 255, 255, 0.055) 40%,
rgba(15, 23, 42, 0.22) 75%,
rgba(3, 7, 18, 0.76) 100%
);
box-shadow:
0 12px 42px rgba(0, 0, 0, 0.48),
inset 0 1.5px 3px rgba(255, 255, 255, 0.42),
inset 0 -1.5px 3px rgba(0, 0, 0, 0.18);
0 15px 30px -6px rgba(0, 0, 0, 0.82),
0 0 18px -1px var(--toolbar-atmosphere-hover),
inset 0 0 2px 1.25px rgba(255, 255, 255, 0.27),
inset 0 1px 0.5px 0.2px rgba(255, 255, 255, 0.7),
inset 0 -3px 8px rgba(255, 255, 255, 0.05),
inset 0 6px 12px rgba(255, 255, 255, 0.12);
}
.earth-toolbar-cluster.is-expanded .earth-toolbar-hub-btn.liquid-glass-surface {
background:
radial-gradient(circle at 32% 22%, rgba(255, 255, 255, 0.15), transparent 42%),
radial-gradient(circle at 52% 52%, rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.15), transparent 64%),
rgba(255, 255, 255, 0.095);
border-color: rgba(var(--toolbar-light-rgb, 91, 186, 255), 0.44);
radial-gradient(
circle at 35% 30%,
rgba(255, 255, 255, 0.24) 0%,
rgba(255, 255, 255, 0.045) 40%,
rgba(15, 23, 42, 0.24) 75%,
rgba(3, 7, 18, 0.78) 100%
);
box-shadow:
0 12px 42px rgba(0, 0, 0, 0.48),
inset 0 1.5px 3px rgba(255, 255, 255, 0.4),
inset 0 -1.5px 3px rgba(0, 0, 0, 0.18);
0 14px 30px -6px rgba(0, 0, 0, 0.82),
0 0 17px -1px var(--toolbar-atmosphere-hover),
inset 0 0 2px 1.25px rgba(255, 255, 255, 0.26),
inset 0 1px 0.5px 0.2px rgba(255, 255, 255, 0.68),
inset 0 -3px 8px rgba(255, 255, 255, 0.05),
inset 0 7px 13px rgba(255, 255, 255, 0.12);
}
.earth-rotate-toggle .icon-play,

View File

@@ -5600,6 +5600,8 @@ function setupLiquidGlassInteractions() {
surface.style.setProperty("--tilt-y", "0deg");
surface.style.setProperty("--panel-tilt-x", "0deg");
surface.style.setProperty("--panel-tilt-y", "0deg");
surface.style.setProperty("--mouse-x", "0.5");
surface.style.setProperty("--mouse-y", "0.5");
surface.style.setProperty("--dock-scale", "1");
surface.style.setProperty("--dock-lift", "0px");
surface.style.setProperty("--dock-shift-x", "0px");
@@ -5616,13 +5618,15 @@ function setupLiquidGlassInteractions() {
surfaces.forEach((surface) => {
resetSurface(surface);
const isToolbarSurface = Boolean(surface.closest(".earth-toolbar-items"));
const isToolbarSurface = Boolean(surface.closest(".earth-toolbar"));
const isPanelSurface = surface.classList.contains("hud-panel");
bindListener(surface, "pointermove", (event) => {
const rect = surface.getBoundingClientRect();
const px = (event.clientX - rect.left) / rect.width;
const py = (event.clientY - rect.top) / rect.height;
surface.style.setProperty("--mouse-x", `${px.toFixed(3)}`);
surface.style.setProperty("--mouse-y", `${py.toFixed(3)}`);
if (isPanelSurface) {
const panelTiltX = (0.5 - py) * 5;
const panelTiltY = (px - 0.5) * 6;