音效生成路径优化 #145
Reference in New Issue
Block a user
Delete Branch "feat/sound_opt"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
- 新增 ImageCanvasBackgroundMusicPresetModel:三组 30 个固定预设(用途 12 / 氛围 3 / 场景 15)与追加纯函数;按 Unicode code point 读取末位字符,标点用 \p{Punctuation} 判定,非标点先补中文句号,不去重、不截断、不改内部空白。 - 新增独立 BGM composer:canonical preview 计数不改写输入框,AI 补全、一键简化、撤销与生成按动作矩阵启用,错误复用 PlatformStatusMessage,底部保留固定 Suno 胶囊与动态泥点价格。 - 撤销按钮按权威设计矩阵渲染:可见条件为存在可撤销快照或本次临时快照,启用条件为可见且面板未锁定;AI 处理与提交期间显示并禁用,不隐藏。 - 新增预设轨道组件:多份等宽队列 + ResizeObserver 实测宽度 + rAF 按帧步进取模归位实现无缝循环;左右 15% 加速、中间 70% 暂停、箭头 hover 加速与点击离散滚动,底部细线标记当前控制区。 - 轨道只保留一份可聚焦预设按钮,视觉克隆移出可访问树但点击映射到同一动作;收起、锁定、页面不可见、dialog 切换和卸载都取消 rAF。 - 桌面 hover 控制区按 (hover: hover) and (pointer: fine) 启用,能力丢失时清空当前控制区,避免没有 pointerleave 的设备永久停在暂停态;reduced-motion 初值与运行中变化都生效。 - 触摸抬手后等待滚动事件停止再恢复 rAF,不使用固定等待时长,且不把 rAF 自身写 scrollLeft 触发的 scroll 计入空闲判定。 - 加速档按真机实测定为 238 px/s,左右控制区与箭头共用,避免两者之间出现速度突变。 - 将原共享音频 composer 收窄为 SFX-only,BGM 路由到独立组件并按 dialog ID 设置 key;SFX 的 Vidu 胶囊、时长滑块、默认 Prompt 与价格行为不变。 - 补充 ImageCanvasBackgroundMusicPresetModel、独立 composer 与预设轨道的定向测试,并扩展现有 composer 的 SFX 回归与 BGM 路由断言。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>New commits pushed, approval review dismissed automatically according to repository settings
请求修改。当前复审绑定 head
0edefc67ec85590e082d38876f3d31fb5e8f59d4、base6cb13b3884e66460885d78bbc672b0f145e954a0。最新提交已经补齐 Agent 音频失败回填的用户可见错误投影,External 任务失败和 inline 5xx 的内部诊断也已做脱敏;merge-tree 与git diff --check通过。但普通用户的 inline 音频成功响应仍把内部 provider 加回共享公开 DTO:SFX 返回
elevenlabs,BGM 透传生成 provider,前端响应类型也将provider设为必填。这与现役文档“音频完成响应不携带 provider”的边界直接冲突。请把普通 HTTP 成功 DTO 与 worker/Agent 内部回填 DTO 分离,或在普通用户响应边界统一剥离 provider,并补 SFX/BGM inline 成功回归测试;Agent 内部 compact 仍可保留回填所需字段。写回前当前 required 状态:Project CI / Backend tests (pull_request)=success, Project CI / Frontend tests (pull_request)=success, Project CI / Native shell tests (pull_request)=pending, Project CI / Repository checks (pull_request)=success。
当前 head 仍没有有效批准;旧 review 182 绑定
8f4cce288c且已 stale/dismissed。提交历史中也仍有英文 merge 标题和空正文提交,需要按仓库规范清理。@@ -605,10 +770,15 @@ pub struct EditorAudioGenerateResponse {#[serde(skip_serializing_if = "Option::is_none")]pub actual_prompt: Option<String>,pub model: String,pub provider: String,[P2] 不要把内部 provider 加回普通用户音频 DTO
这个共享响应会被 SFX/BGM inline handler 直接包进普通用户 HTTP 成功响应:当前 SFX 填入
elevenlabs,BGM 透传generated.provider,前端EditorAudioGenerationResult也把provider设成必填。最新的失败脱敏只处理错误链,并未关闭成功响应泄露,且这里新增的测试反而锁定provider=elevenlabs。这与现役权威文档“音频完成响应不携带 provider”冲突。请拆分普通公开 DTO 与 worker/Agent 内部回填 DTO,或在普通用户成功边界剥离该字段,并补 SFX/BGM inline 成功响应不含 provider 的回归测试。