auto-save 2026-05-15 16:27 (~3)

This commit is contained in:
2026-05-15 16:27:46 +08:00
parent 36eb205af0
commit ecc5894e52
3 changed files with 25 additions and 20 deletions

View File

@@ -1,18 +1,5 @@
{ {
"entries": [ "entries": [
{
"files_changed": 4,
"hash": "3026319",
"message": "auto-save 2026-05-14 01:00 (+2, ~2)",
"ts": "2026-05-14T01:00:24+08:00",
"type": "commit"
},
{
"files_changed": 2,
"message": "Claude 会话活跃 · 最近命令claude · 2 项未提交变更 · 最近提交auto-save 2026-05-14 01:00 (+2, ~2)",
"ts": "2026-05-13T17:03:10Z",
"type": "session-heartbeat"
},
{ {
"files_changed": 7, "files_changed": 7,
"hash": "3684917", "hash": "3684917",
@@ -3251,6 +3238,19 @@
"message": "auto-save 2026-05-15 16:16 (~1)", "message": "auto-save 2026-05-15 16:16 (~1)",
"hash": "e262285", "hash": "e262285",
"files_changed": 1 "files_changed": 1
},
{
"ts": "2026-05-15T16:22:15+08:00",
"type": "commit",
"message": "auto-save 2026-05-15 16:22 (~1)",
"hash": "36eb205",
"files_changed": 1
},
{
"ts": "2026-05-15T08:24:47Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 1 项未提交变更 · 最近提交auto-save 2026-05-15 16:22 (~1)",
"files_changed": 1
} }
] ]
} }

View File

@@ -942,6 +942,17 @@ SubjectAsset {
<h2>变更记录</h2> <h2>变更记录</h2>
<p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p> <p>这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。</p>
<div class="changelog"> <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>角色舞台默认挂了 <code>login-stage-breathe</code> 无限循环,导致四个角色在登录页一直上下移动。</p>
<p><strong>改动:</strong>移除默认呼吸动画,角色平时固定贴底;错误态只保留短暂横向抖动,成功态保留一次性反馈动画。</p>
<p><strong>影响:</strong><code>web/app/globals.css</code><code>docs/source-analysis.html</code></p>
</div>
</article>
<article class="change"> <article class="change">
<header> <header>
<h3>2026-05-15 · 登录页角色组件重构</h3> <h3>2026-05-15 · 登录页角色组件重构</h3>

View File

@@ -204,7 +204,6 @@
height: 400px; height: 400px;
transform: translateX(-50%) scale(0.74); transform: translateX(-50%) scale(0.74);
transform-origin: bottom center; transform-origin: bottom center;
animation: login-stage-breathe 7s ease-in-out infinite;
} }
.login-figure { .login-figure {
position: absolute; position: absolute;
@@ -412,7 +411,7 @@
transform: translate(-8px, -6px); transform: translate(-8px, -6px);
} }
.login-character-stage[data-mood="error"] .login-characters-container { .login-character-stage[data-mood="error"] .login-characters-container {
animation: login-stage-breathe 7s ease-in-out infinite, login-shake 0.28s ease-in-out 2; animation: login-shake 0.28s ease-in-out 2;
} }
.login-character-stage[data-mood="error"] .login-eye { .login-character-stage[data-mood="error"] .login-eye {
height: 10px; height: 10px;
@@ -442,10 +441,6 @@
.login-character-stage[data-mood="success"] .login-yellow-mouth path { .login-character-stage[data-mood="success"] .login-yellow-mouth path {
d: path("M0 6 Q20 18, 40 18 Q60 18, 80 6"); d: path("M0 6 Q20 18, 40 18 Q60 18, 80 6");
} }
@keyframes login-stage-breathe {
0%, 100% { translate: 0 0; }
50% { translate: 0 -8px; }
}
@keyframes login-shake { @keyframes login-shake {
0%, 100% { translate: 0 0; } 0%, 100% { translate: 0 0; }
33% { translate: -5px 0; } 33% { translate: -5px 0; }
@@ -465,7 +460,6 @@
} }
} }
@media (prefers-reduced-motion: reduce) { @media (prefers-reduced-motion: reduce) {
.login-characters-container,
.login-character-stage[data-mood="error"] .login-characters-container, .login-character-stage[data-mood="error"] .login-characters-container,
.login-character-stage[data-mood="success"] .login-characters-container { .login-character-stage[data-mood="success"] .login-characters-container {
animation: none; animation: none;