diff --git a/tools/server/public/index.html.gz b/tools/server/public/index.html.gz index c5b9166a30..e59d8a2470 100644 Binary files a/tools/server/public/index.html.gz and b/tools/server/public/index.html.gz differ diff --git a/tools/server/webui/src/lib/components/app/misc/KeyboardShortcutInfo.svelte b/tools/server/webui/src/lib/components/app/misc/KeyboardShortcutInfo.svelte index 5b7522fe1b..bffbf7945f 100644 --- a/tools/server/webui/src/lib/components/app/misc/KeyboardShortcutInfo.svelte +++ b/tools/server/webui/src/lib/components/app/misc/KeyboardShortcutInfo.svelte @@ -17,9 +17,11 @@ {#each keys as key, index (index)} {#if key === 'shift'} - + {:else if key === 'cmd'} + {:else if key === 'ctrl'} + Ctrl {:else} {key.toUpperCase()} {/if} diff --git a/tools/server/webui/src/lib/components/app/notebook/NotebookScreen.svelte b/tools/server/webui/src/lib/components/app/notebook/NotebookScreen.svelte index 932172e58a..4b0b32d9f2 100644 --- a/tools/server/webui/src/lib/components/app/notebook/NotebookScreen.svelte +++ b/tools/server/webui/src/lib/components/app/notebook/NotebookScreen.svelte @@ -5,7 +5,7 @@ import { Play, Square, Settings, Undo, Redo } from '@lucide/svelte'; import { config } from '$lib/stores/settings.svelte'; import DialogChatSettings from '$lib/components/app/dialogs/DialogChatSettings.svelte'; - import { ModelsSelector, ChatMessageStatistics, DialogChatError } from '$lib/components/app'; + import { ChatMessageStatistics, DialogChatError, KeyboardShortcutInfo, ModelsSelector } from '$lib/components/app'; import { useModelChangeValidation } from '$lib/hooks/use-model-change-validation.svelte'; import { modelsStore, modelOptions, selectedModelId } from '$lib/stores/models.svelte'; import { isRouterMode } from '$lib/stores/server.svelte'; @@ -203,9 +203,36 @@ event.returnValue = ''; } } + + function handleKeydown(event: KeyboardEvent) { + const isCtrlOrCmd = event.ctrlKey || event.metaKey; + + if (event.shiftKey && event.key === 'Enter') { + event.preventDefault(); + if (notebookStore.isGenerating) { + handleStop(); + } else if (canGenerate) { + handleGenerate(); + } + } + + if (isCtrlOrCmd && event.key === 'z') { + event.preventDefault(); + if (canUndo) { + handleUndo(); + } + } + + if (isCtrlOrCmd && event.key === 'y') { + event.preventDefault(); + if (canRedo) { + handleRedo(); + } + } + } - +
-
+