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}
-
+
{$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}