auto-save 2026-05-15 15:59 (~4)

This commit is contained in:
2026-05-15 16:00:08 +08:00
parent eabec39bdc
commit 4b44c285e5
4 changed files with 42 additions and 32 deletions

View File

@@ -1,18 +1,5 @@
{
"entries": [
{
"files_changed": 1,
"hash": "5c9c80e",
"message": "auto-save 2026-05-14 00:31 (~1)",
"ts": "2026-05-14T00:31:52+08:00",
"type": "commit"
},
{
"files_changed": 1,
"message": "Claude 会话活跃 · 最近命令claude · 1 项未提交变更 · 最近提交auto-save 2026-05-14 00:31 (~1)",
"ts": "2026-05-13T16:33:09Z",
"type": "session-heartbeat"
},
{
"files_changed": 3,
"hash": "302b0ed",
@@ -3251,6 +3238,19 @@
"message": "auto-save 2026-05-15 15:48 (~1)",
"hash": "beeed42",
"files_changed": 1
},
{
"ts": "2026-05-15T15:54:34+08:00",
"type": "commit",
"message": "auto-save 2026-05-15 15:54 (~4)",
"hash": "eabec39",
"files_changed": 4
},
{
"ts": "2026-05-15T07:54:47Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 1 项未提交变更 · 最近提交auto-save 2026-05-15 15:54 (~4)",
"files_changed": 1
}
]
}

View File

@@ -941,6 +941,16 @@ SubjectAsset {
<h2>变更记录</h2>
<p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p>
<div class="changelog">
<article class="change">
<header>
<h3>2026-05-15 · 登录页角色眼神幅度增强</h3>
<span class="tag rose">UI</span>
</header>
<div class="body">
<p><strong>改动:</strong>放大登录页动画角色的鼠标跟随瞳孔位移,并加大显示密码时眼睛整体看向目标的偏移;同时略微放大白眼球,避免瞳孔大幅移动时显得被裁切。</p>
<p><strong>影响:</strong><code>web/app/login/page.tsx</code><code>web/app/globals.css</code><code>docs/source-analysis.html</code></p>
</div>
</article>
<article class="change">
<header>
<h3>2026-05-15 · 登录页动画角色改回风格库原版几何结构</h3>

View File

@@ -286,16 +286,16 @@
}
.login-eye {
position: relative;
width: 18px;
height: 18px;
width: 22px;
height: 22px;
border-radius: 999px;
background: white;
overflow: hidden;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
}
.login-eye--small {
width: 16px;
height: 16px;
width: 20px;
height: 20px;
}
.login-eye::after,
.login-pupil::after {
@@ -303,15 +303,15 @@
position: absolute;
left: 50%;
top: 50%;
width: 7px;
height: 7px;
width: 8px;
height: 8px;
border-radius: 50%;
background: #2d2d2d;
transform: translate(var(--eye-x), var(--eye-y));
transition: transform 0.08s linear, opacity 0.2s ease;
}
.login-eye::after {
margin: -3.5px 0 0 -3.5px;
margin: -4px 0 0 -4px;
}
.login-pupil {
position: relative;
@@ -392,24 +392,24 @@
transform: skewX(0deg) translateY(-10px);
}
.login-page[data-mood="peek"] .login-eyes--purple {
left: 50px;
top: 20px;
left: 40px;
top: 14px;
}
.login-page[data-mood="peek"] .login-eyes--black {
left: 2px;
top: 20px;
}
.login-page[data-mood="peek"] .login-eyes--orange {
left: 68px;
top: 48px;
}
.login-page[data-mood="peek"] .login-eyes--yellow {
left: 10px;
top: 28px;
}
.login-page[data-mood="peek"] .login-eyes--orange {
left: 80px;
top: 55px;
}
.login-page[data-mood="peek"] .login-eyes--yellow {
left: 20px;
top: 35px;
}
.login-page[data-mood="peek"] .login-eye::after,
.login-page[data-mood="peek"] .login-pupil::after {
transform: translate(-5px, -4px);
transform: translate(-8px, -6px);
}
.login-page[data-mood="error"] .login-characters-container {
animation: login-stage-breathe 7s ease-in-out infinite, login-shake 0.28s ease-in-out 2;

View File

@@ -33,7 +33,7 @@ export default function LoginPage() {
const centerY = window.innerHeight / 2
const nextX = Math.max(-1, Math.min(1, (event.clientX - centerX) / centerX))
const nextY = Math.max(-1, Math.min(1, (event.clientY - centerY) / centerY))
setEyeOffset({ x: nextX * 5, y: nextY * 3 })
setEyeOffset({ x: nextX * 8, y: nextY * 5.5 })
}
window.addEventListener("pointermove", onPointerMove)
return () => window.removeEventListener("pointermove", onPointerMove)