From 4f13cb742476d81a6b42a2aa5996e82a478c2481 Mon Sep 17 00:00:00 2001
From: Judd <4046440+foldl@users.noreply.github.com>
Date: Sun, 17 May 2026 08:13:44 +0800
Subject: [PATCH] webui: support video files as input (#22830)
---
tools/ui/src/app.d.ts | 2 ++
.../app/badges/BadgesModality.svelte | 10 ++++---
...hatAttachmentsListItemThumbnailFile.svelte | 14 ++++++++--
.../ChatAttachmentsPreview.svelte | 24 ++++++++++++++++-
.../ChatAttachmentsPreviewCurrentItem.svelte | 15 ++++++++---
...tAttachmentsPreviewCurrentItemVideo.svelte | 26 +++++++++++++++++++
...hatAttachmentsPreviewThumbnailStrip.svelte | 5 +++-
.../ChatFormActionAddDropdown.svelte | 3 +++
.../ChatFormActionAddSheet.svelte | 3 +++
.../ChatFormActionsAdd.svelte | 4 +++
.../ChatFormActionModels.svelte | 6 +++++
.../ChatFormActions/ChatFormActions.svelte | 3 +++
.../app/chat/ChatScreen/ChatScreen.svelte | 17 +++++++++++-
tools/ui/src/lib/constants/attachment-menu.ts | 9 +++++++
tools/ui/src/lib/constants/icons.ts | 10 ++++---
.../src/lib/constants/supported-file-types.ts | 13 ++++++++++
tools/ui/src/lib/enums/attachment.ts | 5 +++-
tools/ui/src/lib/enums/chat.ts | 3 ++-
tools/ui/src/lib/enums/files.ts | 16 ++++++++++++
tools/ui/src/lib/enums/index.ts | 1 +
tools/ui/src/lib/enums/model.ts | 3 ++-
.../lib/hooks/use-attachment-menu.svelte.ts | 1 +
tools/ui/src/lib/services/chat.service.ts | 19 ++++++++++++++
tools/ui/src/lib/stores/models.svelte.ts | 20 +++++++++++---
tools/ui/src/lib/types/api.d.ts | 5 ++++
tools/ui/src/lib/types/common.d.ts | 7 ++++-
tools/ui/src/lib/types/database.d.ts | 9 +++++++
tools/ui/src/lib/types/index.ts | 1 +
tools/ui/src/lib/types/models.d.ts | 2 ++
tools/ui/src/lib/utils/attachment-type.ts | 21 +++++++++++++++
.../src/lib/utils/convert-files-to-extra.ts | 15 +++++++++++
tools/ui/src/lib/utils/file-type.ts | 13 ++++++++++
tools/ui/src/lib/utils/index.ts | 2 +-
.../src/lib/utils/modality-file-validation.ts | 16 ++++++++++--
.../src/lib/utils/process-uploaded-files.ts | 4 +++
.../tests/stories/fixtures/storybook-mocks.ts | 11 +++++---
36 files changed, 310 insertions(+), 28 deletions(-)
create mode 100644 tools/ui/src/lib/components/app/chat/ChatAttachments/ChatAttachmentsPreview/ChatAttachmentsPreviewCurrentItem/ChatAttachmentsPreviewCurrentItemVideo.svelte
diff --git a/tools/ui/src/app.d.ts b/tools/ui/src/app.d.ts
index f5af7323c..ec65952e9 100644
--- a/tools/ui/src/app.d.ts
+++ b/tools/ui/src/app.d.ts
@@ -39,6 +39,7 @@ import type {
DatabaseMessage,
DatabaseMessageExtra,
DatabaseMessageExtraAudioFile,
+ DatabaseMessageExtraVideoFile,
DatabaseMessageExtraImageFile,
DatabaseMessageExtraTextFile,
DatabaseMessageExtraPdfFile,
@@ -102,6 +103,7 @@ declare global {
DatabaseMessage,
DatabaseMessageExtra,
DatabaseMessageExtraAudioFile,
+ DatabaseMessageExtraVideoFile,
DatabaseMessageExtraImageFile,
DatabaseMessageExtraTextFile,
DatabaseMessageExtraPdfFile,
diff --git a/tools/ui/src/lib/components/app/badges/BadgesModality.svelte b/tools/ui/src/lib/components/app/badges/BadgesModality.svelte
index 841f1dd9f..d87184ea9 100644
--- a/tools/ui/src/lib/components/app/badges/BadgesModality.svelte
+++ b/tools/ui/src/lib/components/app/badges/BadgesModality.svelte
@@ -1,5 +1,5 @@
{#each modalities as modality (modality)}
- {#if modality === ModelModality.VISION || modality === ModelModality.AUDIO}
+ {#if modality === ModelModality.VISION || modality === ModelModality.AUDIO || modality === ModelModality.VIDEO}
- Vision
+ Vision (Image)
+ {:else if modality === ModelModality.VIDEO}
+
+
+ Vision (Video)
{:else}
Video preview not available
+ {/if} + +{currentItem?.name || 'Video'}
+