diff --git a/.memory/worklog.json b/.memory/worklog.json index 55a1320..aab86bd 100644 --- a/.memory/worklog.json +++ b/.memory/worklog.json @@ -1,18 +1,5 @@ { "entries": [ - { - "files_changed": 3, - "message": "Claude 会话活跃 · 最近命令:claude · 3 项未提交变更 · 最近提交:auto-save 2026-05-14 02:58 (~6)", - "ts": "2026-05-13T19:03:11Z", - "type": "session-heartbeat" - }, - { - "files_changed": 3, - "hash": "3df3ce4", - "message": "auto-save 2026-05-14 03:03 (~3)", - "ts": "2026-05-14T03:04:09+08:00", - "type": "commit" - }, { "files_changed": 3, "message": "Codex 会话活跃 · 最近命令:codex · 3 项未提交变更 · 最近提交:auto-save 2026-05-14 03:03 (~3)", @@ -3256,6 +3243,19 @@ "message": "auto-save 2026-05-15 18:45 (~3)", "hash": "d466f48", "files_changed": 3 + }, + { + "ts": "2026-05-15T18:51:34+08:00", + "type": "commit", + "message": "auto-save 2026-05-15 18:51 (~1)", + "hash": "7919e65", + "files_changed": 1 + }, + { + "ts": "2026-05-15T10:54:49Z", + "type": "session-heartbeat", + "message": "Codex 会话活跃 · 最近命令:codex · 2 项未提交变更 · 最近提交:auto-save 2026-05-15 18:51 (~1)", + "files_changed": 2 } ] } diff --git a/web/app/login/page.tsx b/web/app/login/page.tsx index 2e284b5..76c2eea 100644 --- a/web/app/login/page.tsx +++ b/web/app/login/page.tsx @@ -90,8 +90,8 @@ export default function LoginPage() {
-
-
+
+
@@ -140,10 +140,10 @@ export default function LoginPage() {
-
+
-
-
+
+

身份验证

diff --git a/web/components/login/oasis-canvas.tsx b/web/components/login/oasis-canvas.tsx index 5516fe8..efa890e 100644 --- a/web/components/login/oasis-canvas.tsx +++ b/web/components/login/oasis-canvas.tsx @@ -1,8 +1,38 @@ "use client" +import { useEffect, useRef } from "react" + export function OasisCanvas() { + const frameRef = useRef(null) + + useEffect(() => { + const sendPointer = (type: "pointermove" | "pointerleave", event?: PointerEvent) => { + const frameWindow = frameRef.current?.contentWindow + if (!frameWindow) return + frameWindow.postMessage( + { + type: `skg-oasis-${type}`, + x: event?.clientX ?? 99999, + y: event?.clientY ?? 99999, + }, + window.location.origin, + ) + } + + const onPointerMove = (event: PointerEvent) => sendPointer("pointermove", event) + const onPointerLeave = () => sendPointer("pointerleave") + + window.addEventListener("pointermove", onPointerMove) + window.addEventListener("pointerleave", onPointerLeave) + return () => { + window.removeEventListener("pointermove", onPointerMove) + window.removeEventListener("pointerleave", onPointerLeave) + } + }, []) + return (