Commit 3c59ced18c592a3088a09625924289d45d4cf3f2

Authored by yibo
1 parent 13984e32

h3-console: 三个新建表单默认档位改成竖屏 480×832/10s/Turbo关/20步

用户要求把新建任务默认参数改成竖屏。text/fl2va/ref2va 三个 tab 统一改,新增
DEFAULT_RES/DEFAULT_DUR 常量,initParamSelects(初次加载)和 clearForm(清空表单)
都改成读这两个常量,不再各自硬编码。480×832 下 10s(243帧) 远低于1125帧上限,安全。

已同步覆盖服务器 /data/models/minimax-h3/console/static/index.html(先确认服务器旧
文件跟本地 git HEAD 完全一致,再推),server.py 按请求读文件不缓存,无需重启,
curl 已验证线上生效。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CHANGELOG.md
1 # 变更记录 1 # 变更记录
2 2
  3 +## 2026-09-01 — h3-console 三个新建表单默认档位改成竖屏 480×832/10s/Turbo关/20步
  4 +
  5 +用户要求把"新建任务"默认参数从横屏改成竖屏,三个 tab(文生视频/首尾帧/参考图)统一改。
  6 +
  7 +**改法**:`h3-console/static/index.html` 新增 `DEFAULT_RES`/`DEFAULT_DUR` 两个常量
  8 +(`'480x832'`/`'243'`,243帧=10s@24fps),`initParamSelects`(页面初次加载)和 `clearForm`
  9 +("清空表单"按钮)两处都改成读这两个常量,不再各自硬编码分辨率下拉第一项/`'362'`(15s)。
  10 +480×832 的 `maxFrames` 是 1125 帧,10s 远低于上限,不受竖屏"没单独测过 OOM 边界"那条限制
  11 +(见 `a4e8255` 的注释)影响。Turbo 默认关、步数默认 20 是原来就有的 `<select>` 默认值,没动。
  12 +
  13 +**验证**:Node 提取页面里的 `<script>` 做 `node --check` 语法检查,再断言
  14 +`DEFAULT_RES`/`DEFAULT_DUR` 对应的分辨率/时长确实在下拉选项里、且 10s≤480×832 的
  15 +1125帧上限(不会被 `syncDurOptions` 过滤掉)、Turbo关时步数第一项是20步。
  16 +
  17 +**部署**:本地改完直接 `cat | ssh ... > /data/models/minimax-h3/console/static/index.html`
  18 +覆盖服务器那份(先 diff 过服务器旧文件确认跟本地 git HEAD 完全一致、没有旁路改动,再推)。
  19 +`server.py` 的 `render_index()` 是每次请求都重新读文件,不缓存,**不需要重启** 8080/8081
  20 +两个 systemd 实例——`curl http://192.168.110.67:8080/` 实测已经是新默认值。
  21 +
  22 +**顺带发现(未处理,已开单独 task 跟进)**:`raylight/server.py`(顶层)和
  23 +`raylight/scripts/server.py` 两份文件已经分叉——服务器上实际跑的
  24 +`/data/models/raylight/server.py` 内容其实等于本地 `raylight/scripts/server.py`
  25 +(有竖屏 `RESOLUTION_CEILINGS` 但没有 `c6815d5` 那次 ComfyUI 健康检查修复),本地顶层
  26 +`raylight/server.py` 反过来(有健康检查修复但没竖屏 ceiling)。说明 `c6815d5` 那次修复
  27 +本地改了但没同步部署到服务器。这次改的是前端默认值,跟这个分叉无关所以没顺手修,但两份
  28 +文件不一致会持续制造"改哪份是真的"的混乱,需要专门理一次。
  29 +
3 ## 2026-08-29(续)— 删掉 gateway.wudaima.com 的 frp 隧道客户端配置 30 ## 2026-08-29(续)— 删掉 gateway.wudaima.com 的 frp 隧道客户端配置
4 31
5 上一节修完 console/ComfyUI 鉴权后审计时留了个尾巴:`frpc.qwen.ini` 里的 32 上一节修完 console/ComfyUI 鉴权后审计时留了个尾巴:`frpc.qwen.ini` 里的
h3-console/static/index.html
@@ -372,7 +372,10 @@ function showCreate(pushUrl = true) { @@ -372,7 +372,10 @@ function showCreate(pushUrl = true) {
372 // 的 RESOLUTION_CEILINGS 保持一致——两边算法对不上就会出现"前端放行、后端拒绝"或反过来, 372 // 的 RESOLUTION_CEILINGS 保持一致——两边算法对不上就会出现"前端放行、后端拒绝"或反过来,
373 // 数字改动两边一起改。832×480/1024×576/1344×768 三个是真实CUDA OOM边界;448×256 技术上测到 373 // 数字改动两边一起改。832×480/1024×576/1344×768 三个是真实CUDA OOM边界;448×256 技术上测到
374 // 3000帧都没OOM,1200帧(50秒)是画质边界(用户看过实际输出判定50秒往后不能看),不是显存边界。 374 // 3000帧都没OOM,1200帧(50秒)是画质边界(用户看过实际输出判定50秒往后不能看),不是显存边界。
375 -// 1344×768(官方默认分辨率)排第一,作为新建任务的默认选项——2026-08-23 用户要求。 375 +// 2026-09-01:新建任务的默认档位改成竖屏 480×832 / 10s(243帧)/ Turbo关 / 20步——用户要求。
  376 +// 默认值统一走下面的 DEFAULT_RES / DEFAULT_DUR,列表顺序不再决定默认选项(初始化和"清空表单"
  377 +// 两处都读这两个常量,改一处就够)。Turbo 默认关在三个表单的 <select> 里写死(option selected),
  378 +// 20 步是 STEPS_BY_TURBO.false 的第一项,跟着 Turbo 联动自动选中。
376 // 2026-09-01:竖屏是宽高互换实现的,不是独立的横竖屏参数(生产已有 720×1280 提交案例,见 379 // 2026-09-01:竖屏是宽高互换实现的,不是独立的横竖屏参数(生产已有 720×1280 提交案例,见
377 // docs/todo/h3-showcase-cases.md)。maxFrames 沿用对应横屏档位的实测值——宽高互换总像素数不变, 380 // docs/todo/h3-showcase-cases.md)。maxFrames 沿用对应横屏档位的实测值——宽高互换总像素数不变,
378 // 显存/耗时特征预期一致,但没有单独针对竖屏重新跑过 OOM 边界测试,如果发现竖屏更早 OOM 要单独下调。 381 // 显存/耗时特征预期一致,但没有单独针对竖屏重新跑过 OOM 边界测试,如果发现竖屏更早 OOM 要单独下调。
@@ -386,6 +389,8 @@ const RESOLUTIONS = [ @@ -386,6 +389,8 @@ const RESOLUTIONS = [
386 { value: '1024x576', width: 1024, height: 576, label: '1024×576(高清档,横屏)', maxFrames: 743 }, 389 { value: '1024x576', width: 1024, height: 576, label: '1024×576(高清档,横屏)', maxFrames: 743 },
387 { value: '576x1024', width: 576, height: 1024, label: '576×1024(高清档,竖屏)', maxFrames: 743 }, 390 { value: '576x1024', width: 576, height: 1024, label: '576×1024(高清档,竖屏)', maxFrames: 743 },
388 ]; 391 ];
  392 +const DEFAULT_RES = '480x832'; // 竖屏标准档
  393 +const DEFAULT_DUR = '243'; // 10s @24fps
389 const DURATIONS = [ 394 const DURATIONS = [
390 { value: '124', frames: 124, label: '5s' }, 395 { value: '124', frames: 124, label: '5s' },
391 { value: '243', frames: 243, label: '10s' }, 396 { value: '243', frames: 243, label: '10s' },
@@ -431,8 +436,8 @@ function syncDurOptions(prefix) { @@ -431,8 +436,8 @@ function syncDurOptions(prefix) {
431 function initParamSelects(prefix) { 436 function initParamSelects(prefix) {
432 const res = document.getElementById(prefix + '-res'); 437 const res = document.getElementById(prefix + '-res');
433 const dur = document.getElementById(prefix + '-dur'); 438 const dur = document.getElementById(prefix + '-dur');
434 - if (res) fillSelect(res, RESOLUTIONS);  
435 - if (dur) { fillSelect(dur, DURATIONS); dur.value = '362'; } // 默认时长 15s,2026-08-23 用户要求 439 + if (res) { fillSelect(res, RESOLUTIONS); res.value = DEFAULT_RES; }
  440 + if (dur) { fillSelect(dur, DURATIONS); dur.value = DEFAULT_DUR; }
436 if (res) { syncDurOptions(prefix); res.onchange = () => syncDurOptions(prefix); } 441 if (res) { syncDurOptions(prefix); res.onchange = () => syncDurOptions(prefix); }
437 442
438 const turboSelect = document.getElementById(prefix + '-turbo'); 443 const turboSelect = document.getElementById(prefix + '-turbo');
@@ -648,17 +653,17 @@ async function submitJob(kind) { @@ -648,17 +653,17 @@ async function submitJob(kind) {
648 } 653 }
649 654
650 // 一键清空——2026-08-24 用户要求:重跑会把整个表单灌满,之前只能一个个手动清,没有回退路径。 655 // 一键清空——2026-08-24 用户要求:重跑会把整个表单灌满,之前只能一个个手动清,没有回退路径。
651 -// 直接恢复成 initParamSelects 那套默认值(分辨率第一项=1344×768、时长15s、Turbo关/20步/  
652 -// seed=0),不是清空成空值——分辨率/时长/Turbo/步数这几个下拉框本来就不允许空选项。 656 +// 直接恢复成 initParamSelects 那套默认值(DEFAULT_RES=480×832 竖屏、DEFAULT_DUR=10s、
  657 +// Turbo关/20步/seed=0),不是清空成空值——分辨率/时长/Turbo/步数这几个下拉框本来就不允许空选项。
653 function clearForm(kind) { 658 function clearForm(kind) {
654 if (!confirm('确定清空这个表单的所有内容?')) return; 659 if (!confirm('确定清空这个表单的所有内容?')) return;
655 document.getElementById(kind + '-prompt').value = ''; 660 document.getElementById(kind + '-prompt').value = '';
656 document.getElementById(kind + '-cfg').value = ''; 661 document.getElementById(kind + '-cfg').value = '';
657 document.getElementById(kind + '-negprompt').value = ''; 662 document.getElementById(kind + '-negprompt').value = '';
658 - document.getElementById(kind + '-res').selectedIndex = 0; 663 + document.getElementById(kind + '-res').value = DEFAULT_RES;
659 syncDurOptions(kind); 664 syncDurOptions(kind);
660 const durSel = document.getElementById(kind + '-dur'); 665 const durSel = document.getElementById(kind + '-dur');
661 - if ([...durSel.options].some(o => o.value === '362')) durSel.value = '362'; 666 + if ([...durSel.options].some(o => o.value === DEFAULT_DUR)) durSel.value = DEFAULT_DUR;
662 const turboSel = document.getElementById(kind + '-turbo'); 667 const turboSel = document.getElementById(kind + '-turbo');
663 turboSel.value = 'false'; 668 turboSel.value = 'false';
664 turboSel.onchange(); // 联动刷新步数选项 669 turboSel.onchange(); // 联动刷新步数选项