From a17cb174ad6e618558281fd1b9aa1df6b037dac2 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 13 Aug 2026 14:46:08 -0600 Subject: [PATCH] refac --- src/lib/components/chat/FileNav.svelte | 24 ++++++++++--------- .../chat/FileNav/FileEntryRow.svelte | 8 ++++--- .../chat/FileNav/FileNavToolbar.svelte | 13 +++++----- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/lib/components/chat/FileNav.svelte b/src/lib/components/chat/FileNav.svelte index 9a9a568d69..2c82ef9abe 100644 --- a/src/lib/components/chat/FileNav.svelte +++ b/src/lib/components/chat/FileNav.svelte @@ -48,7 +48,7 @@ import PortPreview from './FileNav/PortPreview.svelte'; import XTerminal from './XTerminal.svelte'; - const i18n = getContext('i18n'); + const i18n: any = getContext('i18n'); export let onAttach: ((blob: Blob, name: string, contentType: string) => void) | null = null; export let overlay = false; @@ -251,8 +251,9 @@ terminalChatContextPending = chatScoped && !terminalChatContextHidden && !isSavedChatId(chatId); if (terminalChatContextHidden || terminalChatContextPending) return null; - const userTerminal = ($settings?.terminalServers ?? []).find( - (s) => s.url === $selectedTerminalId + const settingsValue: any = $settings; + const userTerminal = (settingsValue?.terminalServers ?? []).find( + (s: any) => s.url === $selectedTerminalId ); const isSystem = !!systemTerminal; @@ -324,11 +325,16 @@ return normalized.endsWith('/') ? normalized : `${normalized}/`; }; + const labelFromPath = (path: string) => { + const parts = normalizePath(path).split('/').filter(Boolean); + return parts.at(-1) ?? '/'; + }; + const setFileRoot = (root?: TerminalFileRoot) => { fileRoot = root?.path ? { path: asDirectoryPath(root.path), - label: root.label || 'Home' + label: root.label || labelFromPath(root.path) } : null; }; @@ -1435,14 +1441,10 @@ {:else if error}
{error}
{:else if entries.length === 0 && !creatingFolder && !creatingFile} -
- +
{$i18n.t('This folder is empty')}
-
- {$i18n.t('Drop files here to upload')} -
{/if} @@ -1520,7 +1522,7 @@ {#if selectedTerminal && !selectedFile && previewPort === null} -
+
{#if terminalEnabled} -
+
{#if terminalExpanded} diff --git a/src/lib/components/chat/FileNav/FileEntryRow.svelte b/src/lib/components/chat/FileNav/FileEntryRow.svelte index 2abde52d1e..0dff841d37 100644 --- a/src/lib/components/chat/FileNav/FileEntryRow.svelte +++ b/src/lib/components/chat/FileNav/FileEntryRow.svelte @@ -12,7 +12,7 @@ import Pencil from '../../icons/Pencil.svelte'; import Clipboard from '../../icons/Clipboard.svelte'; - const i18n = getContext('i18n'); + const i18n: any = getContext('i18n'); export let entry: FileEntry; export let currentPath: string; @@ -140,7 +140,7 @@
  • {formatFileSize(entry.size)} {:else if entry.type === 'directory' && showDate && entry.modified && !renaming} - {formatRelativeTime(entry.modified)} + {formatRelativeTime(entry.modified)} {/if} diff --git a/src/lib/components/chat/FileNav/FileNavToolbar.svelte b/src/lib/components/chat/FileNav/FileNavToolbar.svelte index 8ff8af08c8..2972ec24dc 100644 --- a/src/lib/components/chat/FileNav/FileNavToolbar.svelte +++ b/src/lib/components/chat/FileNav/FileNavToolbar.svelte @@ -9,7 +9,7 @@ import Dropdown from '$lib/components/common/Dropdown.svelte'; import DropdownMenu from '$lib/components/common/DropdownMenu.svelte'; - const i18n = getContext('i18n'); + const i18n: any = getContext('i18n'); export let breadcrumbs: { label: string; path: string }[] = []; export let selectedFile: string | null = null; @@ -40,6 +40,9 @@ let uploadInput: HTMLInputElement; let breadcrumbEl: HTMLDivElement; + const showSeparator = (index: number) => + index > 0 && (breadcrumbs[0]?.label !== '/' || index > 1); + // Scroll breadcrumb to the end after every DOM update afterUpdate(() => { if (breadcrumbEl) breadcrumbEl.scrollLeft = breadcrumbEl.scrollWidth; @@ -102,11 +105,11 @@ class="flex items-center flex-1 min-w-0 overflow-x-auto scrollbar-none" > {#each breadcrumbs as crumb, i} - {#if i > 1} + {#if showSeparator(i)} / {/if}