Skip to content

feat: 世界画布 v0.9.0——无限画布创作台(自由创作 + LibreTV 式媒体管线 + Edge 156 白屏根修) - #63

Merged
leslie520-bye merged 10 commits into
mainfrom
feat/world-canvas
Oct 29, 2026
Merged

leslie520-bye merged 10 commits into
mainfrom
feat/world-canvas

Conversation

@leslie520-bye

Copy link
Copy Markdown
Contributor

概要

依据 growth/PLAN-canvas.md(v2.2 定稿,经 PGC/UGC/PUGC 三角色评审)落地 世界画布——把五步线性向导升级为「一眼全貌 · 点哪改哪 · 立刻看得见」的自由创作面,Studio 版本 0.8.5 → 0.9.0。

新增

  • 世界画布视图(/canvas/:id,创造组入口):剧情自动布局、缺口高亮、双击空白即建节拍(写回 story,空剧本自动初始化)、端口拖线连接(写回 goto/选项/路由,或仅画布参考线)、版本组对比采纳、AiTask 生成队列(并发 3、失败断链、确认清单防误触烧钱)、连播巡检 + 看片批注、完整试玩(导出同款模板 iframe srcdoc,WYSIWYG)、体检门禁 + 导出 MANIFEST.json 生成档案
  • 引擎侧零改动:story 单一真源 = film/flow.json,画布连边全部派生,board.json 只存布局/候选/任务/批注(schema 真源在 lib/board.ts,Rust 透明存取)

修复(用户实测 + CDP 插桩定位)

  • P1 独立窗口白屏(Edge 156 回归):WebView2 控制器初始化需要主线程消息循环泵动,同步命令体内建窗会饿死内容层(窗口壳在、文档死)。根修 = open_project/open_demo/open_pet 改 async + 子窗口首屏改 App 协议 bootstrap.html(与主窗口/pet 同路径)
  • nodesView 漏写 .value 致画布子树渲染冻结;useViewport 克隆失联;自动保存死循环
  • detect_hardware 改 spawn_blocking(PowerShell 冷启动不再冻结 UI);我的项目首屏骨架+缓存;画布接线指引

验证

  • 前端 build / cargo check / 24 个 lib 测试全绿
  • CDP 真实交互全链走查(21 张截图,growth/REVIEW-studio-090-ux.md):画布自由创作闭环、独立窗口渲染、14 项目列表、Demo 厅安装版快照、体检门禁等
  • 安装包就地更新验证(0.8.5 → 0.9.0 数据无损)

测试与审查

  • 浏览器/WebView2 手动走查通过(截图见报告)
  • 付费 AI 调用(Seedance/TTS/CogView/Rodin)只验入口链路未实际消耗

codex added 10 commits October 28, 2026 17:46
- 剧情单一真源:画布只投影 film/flow.json 的 story,连边全部派生,board.json 只存布局/版本候选/生成任务/批注(schema 真源在 lib/board.ts,Rust 透明存取)
- 画布内核自研:光标锚点缩放/框选/多选拖拽/可视区剔除/小地图/快照撤销(不引库)
- 自动布局缝合:向导产出打开即全貌,新节拍自动补位
- 缺口清单+一键补齐:并发 3 生成队列(Seedance/豆包TTS/本地piper),确认清单防误触烧钱,失败断链可重跑
- 版本组:多候选对比/采纳上钉/同参重跑,写回 flow.clips 与向导互通;节点定稿锁
- 预览双模式:连播巡检(跟随高亮+看片批注)+ 完整试玩(导出同款模板 iframe srcdoc,WYSIWYG)
- 导出:体检全绿门禁 + zip 注入 MANIFEST.json 生成档案(可审计)
- 专业模式开关/首启导览/向导毕业入口/快捷键(Ctrl+Z/Y、Del、方向键微移)
- CanvasBoard: nodesView 漏写 byRef.value → 渲染期 TypeError 冻结整个画布子树(用户报告的空画布+点击无响应根因)
- CanvasBoard: 模板传 onNodeDown(n.pos,...) 与签名 onNodeDown(p:{pos}) 错位 → 每次左键点击抛错,选中/拖拽全废
- layout: useViewport 对传入视口做了 {...initial} 克隆 → 子组件平移缩放不回写父级
- Canvas: saveBoardNow 整对象替换 viewport 触发 deep watch → 自动保存死循环,改逐字段回写
- 双击空白即建:场景/抉择/分流/结局节拍就地创建并写回 story(空剧本自动初始化 film/flow.json,无需先走向导)
- 端口拖线连接:节点右侧圆点拖到目标节点 → 意图菜单(场景=设为直连 goto / 抉择=加选项 / 分流=加路由 / 或仅参考连线)
- 自由参考连线:仅画布层虚线橙线(board.freeEdges),不写剧情,右键可删,入撤销栈
- 图片卡:便签支持素材图,双击空白 → 图片卡 → 从素材库挑选贴上画布
- 快照撤销覆盖 freeEdges;体检对新建未连接节拍给出待修指引
- open_project: 导航看门狗线程(600ms/1.2s/2.4s 渐进补航)——Edge 156 下独立窗口 about:blank 悬案加固(注:卡死现象疑似 --remote-debugging-port 测试环境诱发,干净环境待验证,看门狗保留为无害兜底)
- 画布体检新增「接线指引」:自由创作建了未连线的节拍,直接给出画布侧动作提示(去接),打通与工坊体检的因果链
- 我的项目:localStorage 列表缓存 + 骨架卡,消除首屏异步加载空白
- detect_hardware 改 async spawn_blocking:PowerShell CIM 冷启动 2-5s 不再冻结主线程
- 仪表盘灵感按钮微文案(点击带入向导)
根因(CDP 插桩定位):Edge 156 下 WebView2 控制器初始化需要主线程消息循环持续泵动,
而 Tauri 同步命令恰在主线程执行——在命令体内创建 WebviewWindow 会饿死控制器初始化,
窗口壳正常但内容层死在 about:blank(初始导航/navigate() 补航/看门狗重导航/页面内
JS 全部无效,因文档从未诞生)。0.8.1 的显式补航方案是被旧运行时的容忍度掩盖。

修复:open_project/open_demo/open_pet 三个建窗命令改 async(Tauri async 命令跑在
线程池,窗口创建代理回主线程后循环自由泵动)。附带把子窗口首屏改为 App 协议
bootstrap.html(与主窗口/pet 同路径,最可靠),窗口 label 推导目标后页面内跳转。
- recommend.rs 两档云推荐卡移除 xlite()(函数保留 + allow(dead_code),恢复即加回)
- api.ts CLOUD_PRESETS 移除 XLite 条目(ProviderQuickSetup/模型中心共用此表,自动消失)
- Models.vue 槽位说明文案去 XLite 引用;失主的实时价目拉取加守卫跳过
- 已验证:模型中心/新建向导/快速配置均无 XLite 字样,智谱/DeepSeek 顺序顶上
- 推荐卡与全部云厂商卡内嵌 Key 输入(密码框可切换明文)+ 启用按钮
- 走既有 saveProvider 链路:Key 进 Windows 凭据管理器(OS keyring),
  settings.json 只存 kind/model/base——本地保存、不进仓库、不随项目上传
- 启用即自动连通测试,成功绿字/失败人话报错;当前使用中厂商显示「使用中」标记
- 卡片区域加安全说明(仅存本机凭据管理器,不写设置文件、不进上传通道)
- 最新置顶:智谱 glm-5.3 / Qwen qwen3.8-max / OpenAI gpt-5.2 / Claude sonnet-4-6 / 豆包 doubao-seed-1.6 补全 pills(此前豆包/阶跃/OpenAI/Anthropic/OpenRouter 无清单)
- 模型名全部取自在库引用(网关实时价目 + 引擎 L7 预设),零发明新 ID;DeepSeek 保留官方别名(自动跟随最新版)
- 卡上快捷启用默认调首枚 pill(=最新);选中该厂商时沿用表单内已选模型
- 豆包:文本旗舰 Seed 2.1(doubao-seed-2-1-pro/turbo-260628,2026-06 FORCE 发布)——注意 Seedance 2.5 是视频线,不在本表
- OpenAI:GPT-6.1 系列(gpt-6.1-terra 10-26 新档 / gpt-6.1-sol 9-29 DevDay)
- DeepSeek:官方通道即 deepseek-chat/reasoner 别名(自动跟随最新 V4.1 世代);V4.1-Flash 为内测/三方命名不入官方表
- Moonshot:平台迁移提示(platform.kimi.ai),K3 已现身待官方 ID
- Qwen:补 qwen3.7-max 档;qwen3.8-max 精确 ID 以百炼模型列表为准
- 智谱 glm-5.3 / 阶跃 step-3.7-flash 官网核实维持
@leslie520-bye
leslie520-bye merged commit 3363254 into main Oct 29, 2026
2 checks passed
@leslie520-bye
leslie520-bye deleted the feat/world-canvas branch October 29, 2026 09:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants