fix(*): 质量检查与版本发布 - 修复格式门禁和创作灵感兼容导出并发布 v1.6.2

This commit is contained in:
ddcat666
2026-10-08 20:43:15 +08:00
parent 04689257d2
commit 9174aae013
86 changed files with 22712 additions and 635 deletions

View File

@@ -107,13 +107,13 @@
/* 玻璃质感边框:亮描边勾出面板边缘,内侧一圈高光给厚度,
外圈大而软的投影把面板从背景里"抬"起来,避免看成扁平纸片。
阴影只留三层——11 张卡片都在动,每多一层就是每帧多一次大范围重绘。 */
border: 1px solid rgba(255, 255, 255, .5);
border: 1px solid rgba(255, 255, 255, 0.5);
border-radius: var(--r-2xl, 16px);
background: var(--creation-surface-raised, #f0f1ee);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, .55),
0 0 0 1px rgba(0, 0, 0, .07),
0 28px 54px -26px rgba(0, 0, 0, .52);
inset 0 1px 0 rgba(255, 255, 255, 0.55),
0 0 0 1px rgba(0, 0, 0, 0.07),
0 28px 54px -26px rgba(0, 0, 0, 0.52);
cursor: pointer;
/* 只有最前面那张能点,后面的点击会穿到页面上,不去抢焦点。 */
pointer-events: none;
@@ -124,15 +124,12 @@
/* 先把卡片按自身尺寸对中,再叠加纵深位移与缩放——位移不会被 scale 影响。
--card-enter-y / --card-enter-scale 是入场位移,封面就绪后归零,
所以卡片是"从略下方、略小的位置浮上来",而不是硬闪出来。 */
transform:
translate(-50%, -50%)
translate(var(--card-x, 0px), var(--card-enter-y, 44px))
scale(calc(var(--card-scale, 1) * var(--card-enter-scale, .95)));
transform: translate(-50%, -50%) translate(var(--card-x, 0px), var(--card-enter-y, 44px)) scale(calc(var(--card-scale, 1) * var(--card-enter-scale, 0.95)));
/* 只动 transform 和 opacity,两者都能交给合成层,不触发重排重绘。
缓动先缓后快再长尾软着陆,观感是镜头平稳推拉而不是"弹"过去。 */
transition:
transform 660ms cubic-bezier(.32, .72, 0, 1),
opacity 520ms cubic-bezier(.4, 0, .2, 1);
transform 660ms cubic-bezier(0.32, 0.72, 0, 1),
opacity 520ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* 封面已就绪:放行这张卡。 */
@@ -151,13 +148,10 @@
独立属性会插在 transform 之前合成,卡片会被缩放带得偏离原位。
抬起用更短的时长——切换是运镜,悬停是手感,两者不该共用一个节奏。 */
.creation-tunnel-card.is-active:hover {
transform:
translate(-50%, -50%)
translate(var(--card-x, 0px), calc(var(--card-enter-y, 0px) - 14px))
scale(calc(var(--card-scale, 1) * var(--card-enter-scale, 1) * 1.04));
transform: translate(-50%, -50%) translate(var(--card-x, 0px), calc(var(--card-enter-y, 0px) - 14px)) scale(calc(var(--card-scale, 1) * var(--card-enter-scale, 1) * 1.04));
transition:
transform 240ms cubic-bezier(.2, .8, .3, 1),
opacity 520ms cubic-bezier(.4, 0, .2, 1);
transform 240ms cubic-bezier(0.2, 0.8, 0.3, 1),
opacity 520ms cubic-bezier(0.4, 0, 0.2, 1);
}
/* 玻璃罩:斜向高光 + 底部压暗,让面板读起来是一块有厚度的玻璃,不是一张图。 */
@@ -165,9 +159,7 @@
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(158deg, rgba(255, 255, 255, .3), rgba(255, 255, 255, 0) 40%),
linear-gradient(0deg, rgba(0, 0, 0, .18), rgba(0, 0, 0, 0) 44%);
background: linear-gradient(158deg, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0) 40%), linear-gradient(0deg, rgba(0, 0, 0, 0.18), rgba(0, 0, 0, 0) 44%);
pointer-events: none;
}
@@ -186,13 +178,13 @@
flex-direction: column;
gap: var(--space-1, 4px);
padding: 44px var(--space-4, 16px) var(--space-3, 12px);
background: linear-gradient(transparent, rgba(0, 0, 0, .52) 40%, rgba(0, 0, 0, .84));
background: linear-gradient(transparent, rgba(0, 0, 0, 0.52) 40%, rgba(0, 0, 0, 0.84));
color: #fff;
text-align: left;
text-shadow: 0 1px 8px rgba(0, 0, 0, .55);
text-shadow: 0 1px 8px rgba(0, 0, 0, 0.55);
opacity: 0;
/* 比位移稍慢一点收尾,避免文字跟着画面一起"闪"进闪出。 */
transition: opacity 380ms cubic-bezier(.4, 0, .2, 1);
transition: opacity 380ms cubic-bezier(0.4, 0, 0.2, 1);
}
.creation-tunnel-card.is-active .creation-tunnel-card-info {
@@ -205,7 +197,7 @@
gap: var(--space-1, 4px);
font-size: var(--fs-label, 11px);
line-height: 1.2;
opacity: .84;
opacity: 0.84;
}
.creation-tunnel-card-cta svg {
@@ -224,7 +216,7 @@
overflow: hidden;
font-size: var(--fs-caption, 12px);
line-height: 1.45;
opacity: .84;
opacity: 0.84;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
@@ -243,7 +235,7 @@
background: color-mix(in srgb, var(--user-surface) 62%, transparent);
border: 1px solid color-mix(in srgb, var(--user-ink) 14%, transparent);
border-radius: var(--r-full, 999px);
box-shadow: 0 14px 30px -14px rgba(0, 0, 0, .55);
box-shadow: 0 14px 30px -14px rgba(0, 0, 0, 0.55);
-webkit-backdrop-filter: blur(18px) saturate(1.3);
backdrop-filter: blur(18px) saturate(1.3);
cursor: pointer;
@@ -311,7 +303,7 @@
.creation-inspiration-credit summary {
cursor: pointer;
list-style: none;
opacity: .72;
opacity: 0.72;
transition: opacity var(--user-motion, 180ms) ease;
}
@@ -341,10 +333,7 @@
}
.creation-tunnel-card.is-active:hover {
transform:
translate(-50%, -50%)
translate(var(--card-x, 0px), 0)
scale(var(--card-scale, 1));
transform: translate(-50%, -50%) translate(var(--card-x, 0px), 0) scale(var(--card-scale, 1));
}
.creation-gallery-arrow {
@@ -385,4 +374,4 @@
.creation-tunnel-card-desc {
-webkit-line-clamp: 1;
}
}
}

View File

@@ -205,13 +205,7 @@ export function CreationInspirationTunnel({ mode, onStartPrompt }: { mode: Creat
if (!shots.length) return null;
return (
<div
className="creation-inspiration-tunnel"
onPointerEnter={() => setPaused(true)}
onPointerLeave={() => setPaused(false)}
onFocusCapture={() => setPaused(true)}
onBlurCapture={() => setPaused(false)}
>
<div className="creation-inspiration-tunnel" onPointerEnter={() => setPaused(true)} onPointerLeave={() => setPaused(false)} onFocusCapture={() => setPaused(true)} onBlurCapture={() => setPaused(false)}>
<div ref={stageRef} className="creation-gallery-stage" aria-hidden="true">
{shots.map((inspiration, index) => {
const id = catalogIdOf(inspiration);
@@ -269,10 +263,14 @@ export function CreationInspirationTunnel({ mode, onStartPrompt }: { mode: Creat
用 !important 改写 color / background 并把 transform 顶成 translateY(-1px),
按钮会当场掉半个身位。带 span 的按钮不在那条规则的射程内。 */}
<button type="button" className="creation-gallery-arrow is-prev" aria-label="上一张灵感" onClick={() => step(-1)}>
<span className="creation-gallery-arrow-icon"><ChevronLeft aria-hidden="true" /></span>
<span className="creation-gallery-arrow-icon">
<ChevronLeft aria-hidden="true" />
</span>
</button>
<button type="button" className="creation-gallery-arrow is-next" aria-label="下一张灵感" onClick={() => step(1)}>
<span className="creation-gallery-arrow-icon"><ChevronRight aria-hidden="true" /></span>
<span className="creation-gallery-arrow-icon">
<ChevronRight aria-hidden="true" />
</span>
</button>
{/* 卡片本身对辅助技术隐藏,切换结果靠这条播报传达。 */}
@@ -281,4 +279,4 @@ export function CreationInspirationTunnel({ mode, onStartPrompt }: { mode: Creat
</p>
</div>
);
}
}

View File

@@ -0,0 +1,9 @@
import { curatedInspirations, inspirationSources } from "@/lib/inspirations/catalog";
/** Compatibility exports for the original creation page inspiration contract. */
export const creationFeaturedWorks = curatedInspirations.map(({ sourceId, credit, ...item }) => ({
...item,
...(sourceId === "chatgpt-prompts" && credit ? { source: credit } : {}),
}));
export const inspirationSource = inspirationSources["chatgpt-prompts"];