feat(canvas): 新增视频创作台页面并优化未登录状态的用户界面显示

- 新增视频创作台页面
- 修复图片节点size参数传递问题
- 未登录状态下画布右上角不再显示用户头像菜单、用户名称、算力点余额和退出登录入口
- 未登录状态下改为显示登录入口和快捷键按钮
- 用户状态组件中用户名默认值从"用户"改为空字符串
- 根据用户登录状态条件渲染不同的界面元素
This commit is contained in:
HouYunFei
2026-05-26 11:35:00 +08:00
parent 9754af3bf9
commit 567ead89b1
4 changed files with 32 additions and 18 deletions
+1
View File
@@ -3,6 +3,7 @@
## Unreleased
+ [新增] 新增视频创作台页面。
+ [修复] 修复图片节点size参数传递问题。
## v0.0.8 - 2026-05-24
+1 -1
View File
@@ -1 +1 @@
v0.0.8
v0.0.9
+1
View File
@@ -1,5 +1,6 @@
# 待测试
- 未登录状态下,画布右上角不再显示用户头像菜单、用户名称、算力点余额和退出登录入口,改为显示登录入口;快捷键入口仍可直接打开。
- 生图工作台的图片参数区复用画布里的紧凑版图像设置面板,尺寸、质量、生成张数的交互保持一致;工作台仍保留独立的模型选择。
- 视频设置抽成画布和视频创作台共用的紧凑面板,清晰度、尺寸、秒数按固定网格选择并支持手动输入;尺寸选择 `auto` 时请求不传 `size`
- 修复画布和生图工作台选择图片尺寸后,请求图片生成/编辑接口未携带 `size` 参数的问题;`auto` 不传,其余比例或像素尺寸会随请求发送。
@@ -33,7 +33,7 @@ export function UserStatusActions({ showConfig = true, variant = "default", onOp
const logout = useUserStore((state) => state.clearSession);
const openConfigDialog = useConfigStore((state) => state.openConfigDialog);
const canvasTheme = canvasThemes[theme];
const userName = user?.displayName || user?.username || "用户";
const userName = user?.displayName || user?.username || "";
const credits = user?.credits ?? 0;
const avatarUrl = user?.avatarUrl?.trim();
const avatarText = (userName.trim()[0] || "U").toUpperCase();
@@ -61,7 +61,7 @@ export function UserStatusActions({ showConfig = true, variant = "default", onOp
<AnimatedThemeToggler theme={theme} onThemeChange={setTheme} className={naturalIconClass} style={iconStyle} aria-label={theme === "dark" ? "切换到浅色主题" : "切换到深色主题"} title={theme === "dark" ? "切换到浅色主题" : "切换到深色主题"} />
<VersionReleaseModal style={versionStyle} />
<GitHubLink className={cn("bg-transparent hover:bg-transparent dark:hover:bg-transparent", gitHubClassName)} style={gitHubStyle} />
{variant === "canvas" ? (
{variant === "canvas" && user ? (
<Tooltip title="当前算力点余额" placement="bottom">
<div className="flex h-8 shrink-0 items-center gap-1.5 px-1.5 text-xs font-medium tabular-nums opacity-75 transition hover:opacity-100" style={{ color: canvasTheme.node.text }}>
<CreditSymbol className="text-sm leading-none" />
@@ -69,6 +69,17 @@ export function UserStatusActions({ showConfig = true, variant = "default", onOp
</div>
</Tooltip>
) : null}
{!user && onOpenShortcuts ? (
<button type="button" className={naturalIconClass} style={iconStyle} onClick={onOpenShortcuts} aria-label="快捷键" title="快捷键">
<Keyboard className="size-4" />
</button>
) : null}
{!user ? (
<Link href="/login" className="px-1.5 text-sm font-medium text-stone-600 underline-offset-4 transition hover:text-stone-950 hover:underline dark:text-stone-300 dark:hover:text-stone-100" style={iconStyle}>
</Link>
) : null}
{user ? (
<div ref={accountRef}>
<Dropdown open={accountOpen} onOpenChange={onAccountOpenChange} trigger={["click"]} placement="bottomRight" getPopupContainer={getPopupContainer} styles={{ root: { minWidth: 150 } }} menu={{ items: menuItems }}>
<button type="button" className="flex size-8 shrink-0 items-center justify-center rounded-full bg-transparent p-0 text-[0] leading-[0] transition" aria-label="账户菜单">
@@ -84,6 +95,7 @@ export function UserStatusActions({ showConfig = true, variant = "default", onOp
</button>
</Dropdown>
</div>
) : null}
</div>
);
}