auto-save 2026-05-15 20:14 (~5)
This commit is contained in:
@@ -1,12 +1,5 @@
|
||||
{
|
||||
"entries": [
|
||||
{
|
||||
"files_changed": 3,
|
||||
"hash": "b95706a",
|
||||
"message": "auto-save 2026-05-14 03:59 (~3)",
|
||||
"ts": "2026-05-14T03:59:22+08:00",
|
||||
"type": "commit"
|
||||
},
|
||||
{
|
||||
"files_changed": 4,
|
||||
"message": "Claude 会话活跃 · 最近命令:claude · 4 项未提交变更 · 最近提交:auto-save 2026-05-14 03:59 (~3)",
|
||||
@@ -3260,6 +3253,13 @@
|
||||
"type": "session-heartbeat",
|
||||
"message": "Codex 会话活跃 · 最近命令:codex · 1 项未提交变更 · 最近提交:auto-save 2026-05-15 20:03 (~4)",
|
||||
"files_changed": 1
|
||||
},
|
||||
{
|
||||
"ts": "2026-05-15T20:09:14+08:00",
|
||||
"type": "commit",
|
||||
"message": "auto-save 2026-05-15 20:09 (~3)",
|
||||
"hash": "053cb0b",
|
||||
"files_changed": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -594,8 +594,8 @@
|
||||
<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/layout.tsx</code></td><td>登录路由专属 layout:覆盖全站默认网页标题和描述为空,避免 <code>/login</code> 继承工作台 metadata 后在页面源码里继续出现登录界面文字以外的文案。</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/oasis-canvas.tsx</code></td><td>登录页全屏动态视觉层:用 iframe 直接承载下载包 <code>web/public/oasis-source/index.html</code> 的原 WebGPU / Three.js 草场源码;父级登录页只覆盖自己的文案和表单,并在捕获阶段把全局鼠标坐标同时用原生事件和 <code>postMessage</code> 转发给 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 草场、景深、风动和鼠标交互源码;末端阶段保留,只禁用原 footer 出现时把 canvas 上移的逻辑,避免底部露黑边。</td></tr>
|
||||
<tr><td><code>web/components/login/animated-login-characters.tsx</code></td><td>登录页四个几何动态角色组件:当前嵌入登录框顶部,去掉独立网格背景,保留鼠标眼神跟随、输入、显示密码、错误和成功状态反馈。</td></tr>
|
||||
<tr><td><code>web/components/nodes/index.tsx</code></td><td>DAG 节点定义:Input、VisualLab、Audio、Compose,以及画布工作面板 KeyframePanel / VideoFramePanel;旧 Keyframe/Storyboard/VideoGen 组件保留但不再挂主画布。</td></tr>
|
||||
<tr><td><code>web/components/audio-strip.tsx</code></td><td>底部吸附音频条:可拖拽调整高度;播放原音频时移动指针,逐个高亮英文/中文字幕节点和对应波形,并在右侧固定显示按原音频时长生成的 SKG 英文产品口播和 MiniMax 随机英文配音。</td></tr>
|
||||
@@ -946,6 +946,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>左右排列后动态小人左侧区域偏窄,角色边缘被裁;上轮为处理底部黑边把 Oasis 背景硬锁成单屏,削弱了背景随鼠标和滚动变化的感觉。</p>
|
||||
<p><strong>改动:</strong><code>web/app/globals.css</code> 扩大组合登录框和左侧角色列,提升角色区域高度与缩放比例;<code>web/components/login/oasis-canvas.tsx</code> 改为原生鼠标事件和 <code>postMessage</code> 双通道转发,输入框上移动鼠标也驱动草地;<code>web/public/oasis-source/index.html</code> 恢复完整滚动进度,保留末端阶段,只禁用原 footer 可见时的 canvas 上移逻辑来去除底部黑边。</p>
|
||||
<p><strong>影响:</strong><code>web/app/globals.css</code>、<code>web/components/login/oasis-canvas.tsx</code>、<code>web/public/oasis-source/index.html</code>、<code>docs/source-analysis.html</code>。</p>
|
||||
</div>
|
||||
</article>
|
||||
<article class="change">
|
||||
<header>
|
||||
<h3>2026-05-15 · 登录页背景锁定单屏避免底部黑边</h3>
|
||||
|
||||
@@ -387,8 +387,8 @@
|
||||
}
|
||||
.login-page--oasis .login-source-auth-panel {
|
||||
display: grid;
|
||||
width: min(720px, calc(100vw - 40px));
|
||||
grid-template-columns: minmax(210px, 270px) minmax(280px, 340px);
|
||||
width: min(820px, calc(100vw - 40px));
|
||||
grid-template-columns: minmax(320px, 360px) minmax(300px, 360px);
|
||||
align-items: center;
|
||||
gap: 20px;
|
||||
padding: 18px;
|
||||
@@ -400,13 +400,13 @@
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.login-source-character-strip {
|
||||
height: 300px;
|
||||
height: 340px;
|
||||
margin-bottom: 0;
|
||||
overflow: hidden;
|
||||
pointer-events: none;
|
||||
}
|
||||
.login-source-character-strip .login-character-stage {
|
||||
min-height: 300px;
|
||||
min-height: 340px;
|
||||
border: 0;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
@@ -417,7 +417,7 @@
|
||||
display: none;
|
||||
}
|
||||
.login-source-character-strip .login-characters-container {
|
||||
transform: translateX(-50%) scale(0.62);
|
||||
transform: translateX(-50%) scale(0.66);
|
||||
}
|
||||
.login-source-form-pane {
|
||||
min-width: 0;
|
||||
|
||||
@@ -31,7 +31,7 @@ export function OasisCanvas() {
|
||||
const sendPointer = (type: "pointermove" | "pointerleave", event?: PointerEvent) => {
|
||||
const frameWindow = frameRef.current?.contentWindow
|
||||
if (!frameWindow) return
|
||||
if (dispatchNativeMouseEvent(type === "pointermove" ? "mousemove" : "mouseleave", event)) return
|
||||
dispatchNativeMouseEvent(type === "pointermove" ? "mousemove" : "mouseleave", event)
|
||||
frameWindow.postMessage(
|
||||
{
|
||||
type: `skg-oasis-${type}`,
|
||||
@@ -62,7 +62,7 @@ export function OasisCanvas() {
|
||||
aria-hidden="true"
|
||||
className="login-oasis-canvas"
|
||||
loading="eager"
|
||||
src="/oasis-source/index.html"
|
||||
src="/oasis-source/index.html?v=login-pointer-0515"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -868,22 +868,10 @@
|
||||
positions for camera state. Visual text/chrome is made transparent so
|
||||
the parent login UI owns all visible text and controls. */
|
||||
html, body {
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#scroll-container {
|
||||
position: fixed !important;
|
||||
inset: 0 !important;
|
||||
height: 100vh !important;
|
||||
min-height: 100vh !important;
|
||||
overflow: hidden !important;
|
||||
opacity: 0 !important;
|
||||
visibility: hidden !important;
|
||||
pointer-events: none !important;
|
||||
}
|
||||
|
||||
#scroll-container,
|
||||
.nav-float,
|
||||
.nav-mobile-overlay,
|
||||
.site-footer {
|
||||
@@ -2428,15 +2416,7 @@
|
||||
lookTarget.set(cam.lx, cam.ly, cam.lz);
|
||||
camera.lookAt(lookTarget);
|
||||
|
||||
// Push canvas up when footer is visible (cached element)
|
||||
if (_siteFooter) {
|
||||
const footerTop = _siteFooter.getBoundingClientRect().top;
|
||||
if (footerTop < window.innerHeight) {
|
||||
renderer.domElement.style.transform = `translateY(-${window.innerHeight - footerTop}px)`;
|
||||
} else {
|
||||
renderer.domElement.style.transform = '';
|
||||
}
|
||||
}
|
||||
|
||||
// Progress bar
|
||||
progressBar.style.width = (currentScrollT * 100) + '%';
|
||||
|
||||
Reference in New Issue
Block a user