auto-save 2026-05-15 19:41 (~3)
This commit is contained in:
@@ -1,12 +1,5 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"files_changed": 5,
|
||||
"hash": "26a43fc",
|
||||
"message": "auto-save 2026-05-14 03:37 (~5)",
|
||||
"ts": "2026-05-14T03:37:19+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 1,
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-14 03:37 (~5)",
|
||||
@@ -3258,6 +3251,13 @@
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 3 项未提交变更 · 最近提交:auto-save 2026-05-15 19:30 (~3)",
|
||||
"files_changed": 3
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-15T19:35:53+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-15 19:35 (~3)",
|
||||
"hash": "5a37561",
|
||||
"files_changed": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
<table>
|
||||
<tbody>
|
||||
<tr><td><code>web/app/page.tsx</code></td><td>产品工作台主状态:jobs、activeJobId、按 job 隔离的 selectedFrames/详情面板状态、clipboard、ReactFlow 节点和边;负责打开/找回画布工作面板。</td></tr>
|
||||
<tr><td><code>web/app/login/page.tsx</code></td><td>生产登录页:访问账号/访问密钥表单、保持会话、错误/成功状态;当前只在原版 Digital Oasis 动态背景上叠加一个组合登录框,框内上方是动态角色、下方是登录表单,不再保留旧版入口营销文案、状态胶囊和指标栏。</td></tr>
|
||||
<tr><td><code>web/app/login/page.tsx</code></td><td>生产登录页:访问账号/访问密钥表单、保持会话、错误/成功状态;当前只在原版 Digital Oasis 动态背景上叠加一个组合登录框,框内上方是动态角色、下方是无可见文字的图标化登录表单,不再保留旧版入口营销文案、状态胶囊和指标栏。</td></tr>
|
||||
<tr><td><code>web/components/login/oasis-canvas.tsx</code></td><td>登录页全屏动态视觉层:用 iframe 直接承载下载包 <code>web/public/oasis-source/index.html</code> 的原 WebGPU / Three.js 草场源码;父级登录页只覆盖自己的文案和表单,并在捕获阶段把全局鼠标坐标转发给 iframe,避免登录面板遮挡时草地失去鼠标响应。</td></tr>
|
||||
<tr><td><code>web/public/oasis-source/index.html</code></td><td>从下载包 <code>remix-3d-website-the-digital-o</code> 复制来的原始视觉源码。只额外隐藏 demo 站自己的导航、文字和设置面板,保留原 WebGPU 渲染、草场、景深和鼠标交互源码;同时接收父页面 <code>postMessage</code> 指针坐标驱动草地交互。</td></tr>
|
||||
<tr><td><code>web/components/login/animated-login-characters.tsx</code></td><td>登录页四个几何动态角色组件:当前嵌入登录框顶部,去掉独立网格背景,保留鼠标眼神跟随、输入、显示密码、错误和成功状态反馈。</td></tr>
|
||||
@@ -944,6 +944,18 @@ 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>
|
||||
<span class="tag violet">Login</span>
|
||||
</header>
|
||||
<div class="body">
|
||||
<p><strong>问题:</strong>组合登录框内仍显示输入占位、保持会话、按钮文字和状态提示文字,不符合“登录框文字都删掉”的要求。</p>
|
||||
<p><strong>改动:</strong><code>web/app/login/page.tsx</code> 删除账号/密钥输入框占位文字、保持会话文本、提交按钮文本和错误/成功状态文本;表单视觉只保留图标、输入区域、复选框和箭头按钮,必要的控件识别改用 <code>aria-label</code>。</p>
|
||||
<p><strong>影响:</strong><code>web/app/login/page.tsx</code>、<code>docs/source-analysis.html</code>。</p>
|
||||
</div>
|
||||
</article>
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-15 · 登录页合并小人和表单并清空旧文字</h3>
|
||||
|
||||
@@ -101,15 +101,14 @@ export default function LoginPage() {
|
||||
|
||||
<div className="space-y-3">
|
||||
<label className="block">
|
||||
<span className="sr-only">访问账号</span>
|
||||
<span className="flex h-11 items-center gap-3 rounded-[8px] border border-white/10 bg-black/25 px-3 text-white transition focus-within:border-[#d6b36a] focus-within:bg-black/35 focus-within:ring-2 focus-within:ring-[#d6b36a]/25">
|
||||
<UserRound className="h-4 w-4 text-white/45" />
|
||||
<input
|
||||
className="h-full min-w-0 flex-1 bg-transparent text-base text-white outline-none placeholder:text-white/30"
|
||||
value={username}
|
||||
disabled={disabled}
|
||||
aria-label="account"
|
||||
autoComplete="username"
|
||||
placeholder="账号"
|
||||
onFocus={() => setActiveField("username")}
|
||||
onBlur={() => setActiveField(null)}
|
||||
onChange={(event) => {
|
||||
@@ -121,16 +120,15 @@ export default function LoginPage() {
|
||||
</label>
|
||||
|
||||
<label className="block">
|
||||
<span className="sr-only">访问密钥</span>
|
||||
<span className="flex h-11 items-center gap-3 rounded-[8px] border border-white/10 bg-black/25 px-3 text-white transition focus-within:border-[#d6b36a] focus-within:bg-black/35 focus-within:ring-2 focus-within:ring-[#d6b36a]/25">
|
||||
<LockKeyhole className="h-4 w-4 text-white/45" />
|
||||
<input
|
||||
className="h-full min-w-0 flex-1 bg-transparent text-base text-white outline-none placeholder:text-white/30"
|
||||
value={password}
|
||||
disabled={disabled}
|
||||
aria-label="secret"
|
||||
type={showPassword ? "text" : "password"}
|
||||
autoComplete="current-password"
|
||||
placeholder="密钥"
|
||||
onFocus={() => setActiveField("password")}
|
||||
onBlur={() => setActiveField(null)}
|
||||
onChange={(event) => {
|
||||
@@ -158,21 +156,19 @@ export default function LoginPage() {
|
||||
type="checkbox"
|
||||
checked={remember}
|
||||
disabled={disabled}
|
||||
aria-label="remember"
|
||||
onChange={(event) => setRemember(event.target.checked)}
|
||||
/>
|
||||
<span>保持会话</span>
|
||||
</label>
|
||||
|
||||
<div className="mt-4 min-h-9" aria-live="polite">
|
||||
{error ? (
|
||||
<div className="flex items-start gap-2 rounded-[8px] border border-red-400/30 bg-red-500/10 px-3 py-2 text-sm text-red-100">
|
||||
<AlertCircle className="mt-0.5 h-4 w-4 shrink-0" />
|
||||
<span>{error}</span>
|
||||
<div className="inline-flex h-9 w-9 items-center justify-center rounded-[8px] border border-red-400/30 bg-red-500/10 text-red-100">
|
||||
<AlertCircle className="h-4 w-4" />
|
||||
</div>
|
||||
) : status === "success" ? (
|
||||
<div className="flex items-start gap-2 rounded-[8px] border border-emerald-300/30 bg-emerald-400/10 px-3 py-2 text-sm text-emerald-100">
|
||||
<CheckCircle2 className="mt-0.5 h-4 w-4 shrink-0" />
|
||||
<span>正在进入</span>
|
||||
<div className="inline-flex h-9 w-9 items-center justify-center rounded-[8px] border border-emerald-300/30 bg-emerald-400/10 text-emerald-100">
|
||||
<CheckCircle2 className="h-4 w-4" />
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
@@ -181,8 +177,8 @@ export default function LoginPage() {
|
||||
className="mt-1 flex h-11 w-full items-center justify-center gap-2 rounded-[8px] bg-white px-4 text-base font-semibold text-black shadow-xl shadow-black/25 transition hover:bg-[#f5efe3] focus:outline-none focus:ring-2 focus:ring-[#d6b36a]/60 disabled:cursor-wait disabled:opacity-70"
|
||||
type="submit"
|
||||
disabled={disabled}
|
||||
aria-label="submit"
|
||||
>
|
||||
<span>{status === "loading" ? "验证中" : status === "success" ? "进入中" : "登录"}</span>
|
||||
<ArrowRight className="h-4 w-4" />
|
||||
</button>
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user