执行摘要
优化实时预览等待状态,用旋转圆环替代点脉冲动画
PR body 指出需要简化实时预览的空闲状态绘制,并改进等待状态的视觉反馈,避免不必要的 Canvas 装饰绘制,使 UI 更加清爽一致。
对于关注实时 WebUI 开发的工程师,可以了解其测试同步方法;对于其他开发者,此 PR 价值不大,无需精读。
本 PR 无任何 review 评论,由作者直接合并。
PR body 指出需要简化实时预览的空闲状态绘制,并改进等待状态的视觉反馈,避免不必要的 Canvas 装饰绘制,使 UI 更加清爽一致。
对于关注实时 WebUI 开发的工程师,可以了解其测试同步方法;对于其他开发者,此 PR 价值不大,无需精读。
本 PR 无任何 review 评论,由作者直接合并。
app.js 的 drawIdle 函数):移除渐变、边框和三点占位的 Canvas 绘图,仅保留纯色背景填充,减少不必要的渲染。styles.css):将原有的三点脉冲动画(previewDotPulse)改为旋转单环动画(previewProgressSpin),通过 border-top-color 和旋转动画实现。styles.css):调整 .topbar > *、.preview-scale-control p、#statusText、#chunkText、.stage-stat 的 line-height 和 align-items,确保文本垂直居中。index.html、test_realtime_webui.py):在 index.html 中将样式表和脚本的查询字符串从 v37 增加到 v38;在测试中添加对 previewProgressSpin 存在的断言和 previewDotPulse 不存在的断言,同时更新版本号字符串断言。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
python/sglang/multimodal_gen/apps/realtime_webui/app.js |
WebUI | modified | 6.22 |
python/sglang/multimodal_gen/apps/realtime_webui/styles.css |
WebUI | modified | 4.08 |
python/sglang/multimodal_gen/test/unit/realtime/test_realtime_webui.py |
WebUI 测试 | modified | 3.95 |
python/sglang/multimodal_gen/apps/realtime_webui/index.html |
WebUI | modified | 2.32 |
python/sglang/multimodal_gen/apps/realtime_webui/app.js
core-logic
核心逻辑文件:移除了 drawIdle 中的装饰性绘制(渐变、边框、三点占位),只保留纯色填充,大幅简化空闲状态渲染。
function drawIdle() {
const w = 1280, h = 720;
// 确保 Canvas 尺寸为 1280x720,如果不符合则调整
if (canvas.width !== w || canvas.height !== h) {
canvas.width = w;
canvas.height = h;
}
setPreviewState("idle"); // 更新预览状态为 idle
renderedPreviewFrames = 0; // 重置渲染帧计数
ctx.fillStyle = "#11140f"; // 固定深色背景,不再绘制装饰渐变、边框和占位点
ctx.fillRect(0, 0, w, h);
}
python/sglang/multimodal_gen/apps/realtime_webui/styles.css
core-logic
样式文件:将等待指示器从三点脉冲动画改为旋转圆环动画,并调整工具栏状态文本行高以对齐。
/* 原先的三点脉冲动画已被移除,现替换为旋转进度环 */
.preview-loader {
width: 18px;
height: 18px;
border-radius: 50%;
border: 2px solid rgba(238, 241, 236, 0.22); /* 浅色边框 */
border-top-color: rgba(238, 241, 236, 0.82); /* 顶部颜色较亮,造成旋转效果 */
animation: previewProgressSpin 0.8s linear infinite; /* 匀速旋转动画 */
}
@keyframes previewProgressSpin {
to {
transform: rotate(360deg);
}
}
.topbar > *、.preview-scale-control p、#statusText、#chunkText、.stage-stat 的 line-height: 1 和 align-items: center 以改善垂直对齐。)当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
风险极低,变更仅涉及前端 UI 展示和测试断言,不影响任何后端推理逻辑或 API 行为。CSS 动画替换是视觉等价,空闲绘制简化仅减少装饰,不会导致功能缺失。版本号更新确保客户端能获取最新资源,但若缓存硬编码在其他地方可能需要同步更新。测试断言更新确保了前端代码与测试同步,降低疏忽风险。
直接影响使用 sglang-diffusion Realtime WebUI 的用户,带来更简洁的空闲界面和更现代的加载提示。对系统性能无影响(空闲绘制减少甚至轻微提升)。对团队而言,测试覆盖了新的 CSS 类,未来修改需要同步断言。整体影响范围小,程度低。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论