auto-save 2026-05-15 19:35 (~3)

This commit is contained in:
2026-05-15 19:35:53 +08:00
parent 16444603b3
commit 5a375611a5
3 changed files with 37 additions and 14 deletions

View File

@@ -1,18 +1,5 @@
{ {
"entries": [ "entries": [
{
"files_changed": 4,
"hash": "6ff4f59",
"message": "auto-save 2026-05-14 03:31 (~4)",
"ts": "2026-05-14T03:31:49+08:00",
"type": "commit"
},
{
"files_changed": 3,
"message": "Claude 会话活跃 · 最近命令claude · 3 项未提交变更 · 最近提交auto-save 2026-05-14 03:31 (~4)",
"ts": "2026-05-13T19:33:12Z",
"type": "session-heartbeat"
},
{ {
"files_changed": 5, "files_changed": 5,
"hash": "26a43fc", "hash": "26a43fc",
@@ -3258,6 +3245,19 @@
"type": "session-heartbeat", "type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 1 项未提交变更 · 最近提交auto-save 2026-05-15 19:24 (~4)", "message": "Codex 会话活跃 · 最近命令codex · 1 项未提交变更 · 最近提交auto-save 2026-05-15 19:24 (~4)",
"files_changed": 1 "files_changed": 1
},
{
"ts": "2026-05-15T19:30:19+08:00",
"type": "commit",
"message": "auto-save 2026-05-15 19:30 (~3)",
"hash": "1644460",
"files_changed": 3
},
{
"ts": "2026-05-15T11:34:50Z",
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令codex · 3 项未提交变更 · 最近提交auto-save 2026-05-15 19:30 (~3)",
"files_changed": 3
} }
] ]
} }

View File

@@ -952,7 +952,7 @@ SubjectAsset {
</header> </header>
<div class="body"> <div class="body">
<p><strong>问题:</strong>登录页不应再出现旧版入口文案、流程状态和指标文字;小人独立玻璃框会扩大遮挡面积,网格背景也不需要。</p> <p><strong>问题:</strong>登录页不应再出现旧版入口文案、流程状态和指标文字;小人独立玻璃框会扩大遮挡面积,网格背景也不需要。</p>
<p><strong>改动:</strong><code>web/app/login/page.tsx</code> 将动态角色和登录表单合并进同一个 <code>login-source-auth-panel</code>,删除独立角色框。<code>web/app/globals.css</code> 让浮层容器默认不接收指针事件,只让登录框接收交互;角色区域去掉网格、边框、底部阴影和单独背景。<code>web/components/login/oasis-canvas.tsx</code> 改用 <code>document</code> 捕获阶段监听鼠标移动并转发到 Oasis iframe。</p> <p><strong>改动:</strong><code>web/app/login/page.tsx</code> 将动态角色和登录表单合并进同一个 <code>login-source-auth-panel</code>,删除独立角色框。<code>web/app/globals.css</code> 让浮层容器默认不接收指针事件,只让登录框接收交互;角色区域去掉网格、边框、底部阴影和单独背景。<code>web/components/login/oasis-canvas.tsx</code> 改用 <code>document</code> 捕获阶段监听鼠标移动,并向 Oasis iframe 派发原生 <code>mousemove</code>,让它复用原源码玻璃板覆盖时仍驱动草地的逻辑</p>
<p><strong>影响:</strong><code>web/app/login/page.tsx</code><code>web/components/login/oasis-canvas.tsx</code><code>web/app/globals.css</code><code>docs/source-analysis.html</code></p> <p><strong>影响:</strong><code>web/app/login/page.tsx</code><code>web/components/login/oasis-canvas.tsx</code><code>web/app/globals.css</code><code>docs/source-analysis.html</code></p>
</div> </div>
</article> </article>

View File

@@ -6,9 +6,32 @@ export function OasisCanvas() {
const frameRef = useRef<HTMLIFrameElement | null>(null) const frameRef = useRef<HTMLIFrameElement | null>(null)
useEffect(() => { useEffect(() => {
const dispatchNativeMouseEvent = (type: "mousemove" | "mouseleave", event?: PointerEvent) => {
const frameWindow = frameRef.current?.contentWindow
if (!frameWindow) return false
try {
const nativeEvent = new frameWindow.MouseEvent(type, {
bubbles: true,
cancelable: false,
clientX: event?.clientX ?? 99999,
clientY: event?.clientY ?? 99999,
screenX: event?.screenX ?? 99999,
screenY: event?.screenY ?? 99999,
buttons: event?.buttons ?? 0,
view: frameWindow,
})
frameWindow.dispatchEvent(nativeEvent)
return true
} catch {
return false
}
}
const sendPointer = (type: "pointermove" | "pointerleave", event?: PointerEvent) => { const sendPointer = (type: "pointermove" | "pointerleave", event?: PointerEvent) => {
const frameWindow = frameRef.current?.contentWindow const frameWindow = frameRef.current?.contentWindow
if (!frameWindow) return if (!frameWindow) return
if (dispatchNativeMouseEvent(type === "pointermove" ? "mousemove" : "mouseleave", event)) return
frameWindow.postMessage( frameWindow.postMessage(
{ {
type: `skg-oasis-${type}`, type: `skg-oasis-${type}`,