chore(release): 版本发布 - publish v1.0.10
This commit is contained in:
1 parent
981a87b071
commit
5b769d18a3
5 files changed
+31
-4
No files matched your search
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
## v1.0.10
|
||||||
|
|
||||||
|
- 运维后台请求明细按真实调用聚合视频轮询,补充用户账号、状态、错误、耗时、计费和 Token,并仅在详情中展示脱敏后的请求与响应报文。
|
||||||
|
- 修复请求明细用户信息装配函数返回值不匹配导致的后端构建失败。
|
||||||
|
- 分镜脚本 Composer 支持选择并保存文本模型,首次生成和失败重试均使用节点所选模型。
|
||||||
|
|
||||||
## v1.0.9
|
## v1.0.9
|
||||||
|
|
||||||
- 修复 Seedance `/videos` 请求遗漏声音生成参数的问题,启用声音时生成结果会包含上游音轨。
|
- 修复 Seedance `/videos` 请求遗漏声音生成参数的问题,启用声音时生成结果会包含上游音轨。
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ func (s *Service) decorateAPICallLogs(logs []model.ApiCallLog) error {
|
|||||||
// 历史日志允许读取逻辑删除渠道的名称,但不读取或返回渠道密钥。
|
// 历史日志允许读取逻辑删除渠道的名称,但不读取或返回渠道密钥。
|
||||||
channels, err := s.repo.HistoricalSystemChannelReferences()
|
channels, err := s.repo.HistoricalSystemChannelReferences()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
channelNames := make(map[string]string, len(channels))
|
channelNames := make(map[string]string, len(channels))
|
||||||
for _, channel := range channels {
|
for _, channel := range channels {
|
||||||
|
|||||||
@@ -4,10 +4,14 @@ import type { ColumnsType } from "antd/es/table";
|
|||||||
import { ChevronDown, ChevronUp, Clapperboard, Copy, Expand, Film, Grid3X3, Image as ImageIcon, ListTree, Merge, Minus, Plus, RefreshCw, Send, Square, Trash2, Video, X } from "lucide-react";
|
import { ChevronDown, ChevronUp, Clapperboard, Copy, Expand, Film, Grid3X3, Image as ImageIcon, ListTree, Merge, Minus, Plus, RefreshCw, Send, Square, Trash2, Video, X } from "lucide-react";
|
||||||
|
|
||||||
import { CanvasResourceMentionTextarea } from "@/components/canvas/canvas-resource-mention-textarea";
|
import { CanvasResourceMentionTextarea } from "@/components/canvas/canvas-resource-mention-textarea";
|
||||||
|
import { ModelPicker } from "@/components/model-picker";
|
||||||
|
import { buildGenerationConfig } from "@/lib/canvas/canvas-project-generation";
|
||||||
import type { CanvasResourceReference } from "@/lib/canvas/canvas-resource-references";
|
import type { CanvasResourceReference } from "@/lib/canvas/canvas-resource-references";
|
||||||
import { pipelineStatusLabel, type CanvasStoryboardPipelineProgress, type StoryboardPipelineStage } from "@/lib/canvas/canvas-storyboard-progress";
|
import { pipelineStatusLabel, type CanvasStoryboardPipelineProgress, type StoryboardPipelineStage } from "@/lib/canvas/canvas-storyboard-progress";
|
||||||
import { isContentModerationError } from "@/lib/generation-error";
|
import { isContentModerationError } from "@/lib/generation-error";
|
||||||
|
import { navigateToSettings } from "@/lib/settings-navigation";
|
||||||
import { canvasThemes } from "@/lib/canvas-theme";
|
import { canvasThemes } from "@/lib/canvas-theme";
|
||||||
|
import { useEffectiveConfig } from "@/stores/use-config-store";
|
||||||
import { useThemeStore } from "@/stores/use-theme-store";
|
import { useThemeStore } from "@/stores/use-theme-store";
|
||||||
import type { CanvasGenerationBatch, CanvasGenerationBatchItem, CanvasGenerationBatchItemStatus, CanvasNodeData, CanvasNodeStatus, CanvasWorkspaceMode, StoryboardColumn, StoryboardRow, StoryboardShotCount, StoryboardShotDuration } from "@/types/canvas";
|
import type { CanvasGenerationBatch, CanvasGenerationBatchItem, CanvasGenerationBatchItemStatus, CanvasNodeData, CanvasNodeStatus, CanvasWorkspaceMode, StoryboardColumn, StoryboardRow, StoryboardShotCount, StoryboardShotDuration } from "@/types/canvas";
|
||||||
|
|
||||||
@@ -51,7 +55,7 @@ const columnOptions: Array<{ label: string; value: StoryboardColumn }> = [
|
|||||||
{ label: "负面要求", value: "negativePrompt" },
|
{ label: "负面要求", value: "negativePrompt" },
|
||||||
];
|
];
|
||||||
|
|
||||||
export function CanvasScriptNodeContent({ node, batch, pipeline, scale, mentionReferences, onOpen, onCreateImageNodes, onCreateVideoNodes, onGenerateImages, onGenerateVideos, onMergeVideos, onCreateActionBoards, onRetryBatch, onRetryBatchItem, onStopBatch, onCancelBatchItem, onAddRow, onRemoveRow, onUpdateRow, onPromptChange, onGenerateScript, onShotDurationChange, onShotCountChange, onComposerHeightChange, onConnectStart, onScrollTopChange, workspaceMode = "professional" }: {
|
export function CanvasScriptNodeContent({ node, batch, pipeline, scale, mentionReferences, onOpen, onCreateImageNodes, onCreateVideoNodes, onGenerateImages, onGenerateVideos, onMergeVideos, onCreateActionBoards, onRetryBatch, onRetryBatchItem, onStopBatch, onCancelBatchItem, onAddRow, onRemoveRow, onUpdateRow, onPromptChange, onGenerateScript, onModelChange, onShotDurationChange, onShotCountChange, onComposerHeightChange, onConnectStart, onScrollTopChange, workspaceMode = "professional" }: {
|
||||||
node: CanvasNodeData;
|
node: CanvasNodeData;
|
||||||
batch?: CanvasGenerationBatch;
|
batch?: CanvasGenerationBatch;
|
||||||
pipeline: CanvasStoryboardPipelineProgress;
|
pipeline: CanvasStoryboardPipelineProgress;
|
||||||
@@ -73,6 +77,7 @@ export function CanvasScriptNodeContent({ node, batch, pipeline, scale, mentionR
|
|||||||
onUpdateRow: (rowId: string, patch: Partial<StoryboardRow>) => void;
|
onUpdateRow: (rowId: string, patch: Partial<StoryboardRow>) => void;
|
||||||
onPromptChange: (prompt: string) => void;
|
onPromptChange: (prompt: string) => void;
|
||||||
onGenerateScript: (prompt: string) => void;
|
onGenerateScript: (prompt: string) => void;
|
||||||
|
onModelChange: (model: string) => void;
|
||||||
onShotDurationChange: (duration: StoryboardShotDuration) => void;
|
onShotDurationChange: (duration: StoryboardShotDuration) => void;
|
||||||
onShotCountChange: (count: StoryboardShotCount) => void;
|
onShotCountChange: (count: StoryboardShotCount) => void;
|
||||||
onComposerHeightChange: (height: number) => void;
|
onComposerHeightChange: (height: number) => void;
|
||||||
@@ -81,6 +86,8 @@ export function CanvasScriptNodeContent({ node, batch, pipeline, scale, mentionR
|
|||||||
workspaceMode?: CanvasWorkspaceMode;
|
workspaceMode?: CanvasWorkspaceMode;
|
||||||
}) {
|
}) {
|
||||||
const theme = canvasThemes[useThemeStore((state) => state.theme)];
|
const theme = canvasThemes[useThemeStore((state) => state.theme)];
|
||||||
|
const effectiveConfig = useEffectiveConfig();
|
||||||
|
const generationConfig = buildGenerationConfig(effectiveConfig, node, "text");
|
||||||
const simpleMode = workspaceMode === "simple";
|
const simpleMode = workspaceMode === "simple";
|
||||||
const rows = node.metadata?.storyboard?.rows || [];
|
const rows = node.metadata?.storyboard?.rows || [];
|
||||||
const [prompt, setPrompt] = useState(node.metadata?.composerContent || "");
|
const [prompt, setPrompt] = useState(node.metadata?.composerContent || "");
|
||||||
@@ -203,7 +210,20 @@ export function CanvasScriptNodeContent({ node, batch, pipeline, scale, mentionR
|
|||||||
onWheel={(event) => event.stopPropagation()}
|
onWheel={(event) => event.stopPropagation()}
|
||||||
/>
|
/>
|
||||||
<div className="flex min-w-0 items-center justify-end gap-2" onMouseDown={(event) => event.stopPropagation()} onPointerDown={(event) => event.stopPropagation()}>
|
<div className="flex min-w-0 items-center justify-end gap-2" onMouseDown={(event) => event.stopPropagation()} onPointerDown={(event) => event.stopPropagation()}>
|
||||||
{simpleMode ? <span className="mr-auto text-[11px]" style={{ color: theme.node.muted }}>自动拆分镜头 · 默认时长</span> : <Select<StoryboardShotCount>
|
<div className="mr-auto min-w-36 max-w-56 flex-1">
|
||||||
|
<ModelPicker
|
||||||
|
className="!h-7 !w-full !min-w-0 !text-[10px] !font-normal [&_img]:!size-3 [&_.lucide]:!size-3"
|
||||||
|
fullWidth
|
||||||
|
config={generationConfig}
|
||||||
|
value={generationConfig.model}
|
||||||
|
capability="text"
|
||||||
|
placeholder="选择文本模型"
|
||||||
|
showSelectedPrice={false}
|
||||||
|
onChange={onModelChange}
|
||||||
|
onMissingConfig={() => navigateToSettings({ continueCreation: true })}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{simpleMode ? <span className="text-[11px]" style={{ color: theme.node.muted }}>自动拆分 · 默认时长</span> : <Select<StoryboardShotCount>
|
||||||
className="min-w-32"
|
className="min-w-32"
|
||||||
size="small"
|
size="small"
|
||||||
value={shotCount}
|
value={shotCount}
|
||||||
|
|||||||
@@ -1253,6 +1253,7 @@ function InfiniteCanvasPage() {
|
|||||||
onUpdateRow={(rowId, patch) => updateScriptRow(contentNode.id, rowId, patch)}
|
onUpdateRow={(rowId, patch) => updateScriptRow(contentNode.id, rowId, patch)}
|
||||||
onPromptChange={(composerContent) => handleConfigNodeChange(contentNode.id, { composerContent })}
|
onPromptChange={(composerContent) => handleConfigNodeChange(contentNode.id, { composerContent })}
|
||||||
onGenerateScript={(prompt) => void generateScriptRows(contentNode.id, prompt)}
|
onGenerateScript={(prompt) => void generateScriptRows(contentNode.id, prompt)}
|
||||||
|
onModelChange={(model) => handleConfigNodeChange(contentNode.id, { model })}
|
||||||
onShotDurationChange={(duration: StoryboardShotDuration) => handleConfigNodeChange(contentNode.id, { storyboardShotDuration: duration })}
|
onShotDurationChange={(duration: StoryboardShotDuration) => handleConfigNodeChange(contentNode.id, { storyboardShotDuration: duration })}
|
||||||
onShotCountChange={(count: StoryboardShotCount) => handleConfigNodeChange(contentNode.id, { storyboardShotCount: count })}
|
onShotCountChange={(count: StoryboardShotCount) => handleConfigNodeChange(contentNode.id, { storyboardShotCount: count })}
|
||||||
workspaceMode={workspaceMode}
|
workspaceMode={workspaceMode}
|
||||||
|
|||||||
Reference in new issue
Block a user