diff --git a/.memory/worklog.json b/.memory/worklog.json index 62f318d..f150e69 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -1,11 +1,5 @@ { "entries": [ - { - "files_changed": 1, - "message": "Claude 会话活跃 · 最近命令:claude · 1 项未提交变更 · 最近提交:auto-save 2026-05-14 03:20 (~4)", - "ts": "2026-05-13T19:23:12Z", - "type": "session-heartbeat" - }, { "files_changed": 3, "hash": "65f81ef", @@ -3257,6 +3251,13 @@ "type": "session-heartbeat", "message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-15 19:13 (~2)", "files_changed": 1 + }, + { + "ts": "2026-05-15T19:19:18+08:00", + "type": "commit", + "message": "auto-save 2026-05-15 19:19 (~4)", + "hash": "7d4efa4", + "files_changed": 4 } ] } diff --git a/web/app/globals.css b/web/app/globals.css index bd08759..2f39485 100644 --- a/web/app/globals.css +++ b/web/app/globals.css @@ -379,47 +379,43 @@ z-index: 10; display: grid; min-height: 100vh; - grid-template-columns: minmax(320px, 460px) minmax(280px, 320px); + grid-template-columns: minmax(280px, 370px); align-items: center; justify-content: center; - gap: clamp(28px, 8vw, 120px); padding: clamp(20px, 4vw, 56px); -} -.login-source-character-panel { - width: min(460px, 36vw); - border: 1px solid rgba(140, 180, 120, 0.14); - border-radius: 16px; - background: rgba(10, 18, 10, 0.28); - padding: 16px; - box-shadow: 0 8px 40px rgba(0, 0, 0, 0.32); - backdrop-filter: blur(12px); -} -.login-source-character-panel .login-character-stage { - min-height: 330px; - border-color: rgba(255, 255, 255, 0.12); - background: - linear-gradient(90deg, rgba(255, 255, 255, 0.055) 1px, transparent 1px), - linear-gradient(180deg, rgba(255, 255, 255, 0.055) 1px, transparent 1px), - rgba(255, 255, 255, 0.035); - background-size: 28px 28px, 28px 28px, auto; - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); -} -.login-source-character-panel .login-character-stage::after { - background: linear-gradient(180deg, transparent, rgba(0, 0, 0, 0.24)); -} -.login-source-character-panel .login-stage-grid { - border-color: rgba(255, 255, 255, 0.11); -} -.login-source-character-panel .login-characters-container { - transform: translateX(-50%) scale(0.78); + pointer-events: none; } .login-page--oasis .login-source-auth-panel { - width: min(320px, calc(100vw - 40px)); - padding: 22px; + display: block; + width: min(370px, calc(100vw - 40px)); + padding: 18px 20px 20px; + pointer-events: auto; + background: rgba(10, 18, 10, 0.2); + backdrop-filter: none; } .login-page--source .login-auth-icon { margin-bottom: 0; } +.login-source-character-strip { + height: 188px; + margin-bottom: 14px; + overflow: hidden; + pointer-events: none; +} +.login-source-character-strip .login-character-stage { + min-height: 188px; + border: 0; + background: transparent; + box-shadow: none; +} +.login-source-character-strip .login-character-stage::after, +.login-source-character-strip .login-stage-grid, +.login-source-character-strip .login-character-base { + display: none; +} +.login-source-character-strip .login-characters-container { + transform: translateX(-50%) scale(0.48); +} .login-hero { isolation: isolate; color: #282828; diff --git a/web/app/login/page.tsx b/web/app/login/page.tsx index 6429ab8..27a153e 100644 --- a/web/app/login/page.tsx +++ b/web/app/login/page.tsx @@ -88,11 +88,10 @@ export default function LoginPage() {
- - -
+
+
diff --git a/web/components/login/oasis-canvas.tsx b/web/components/login/oasis-canvas.tsx index d19a05b..8185692 100644 --- a/web/components/login/oasis-canvas.tsx +++ b/web/components/login/oasis-canvas.tsx @@ -24,10 +24,10 @@ export function OasisCanvas() { const listenerOptions = { capture: true, passive: true } - window.addEventListener("pointermove", onPointerMove, listenerOptions) + document.addEventListener("pointermove", onPointerMove, listenerOptions) window.addEventListener("pointerleave", onPointerLeave, listenerOptions) return () => { - window.removeEventListener("pointermove", onPointerMove, listenerOptions) + document.removeEventListener("pointermove", onPointerMove, listenerOptions) window.removeEventListener("pointerleave", onPointerLeave, listenerOptions) } }, [])