diff --git a/src/lib/apis/terminal/index.ts b/src/lib/apis/terminal/index.ts
index 4dca975669..8a89f8ff7f 100644
--- a/src/lib/apis/terminal/index.ts
+++ b/src/lib/apis/terminal/index.ts
@@ -36,6 +36,7 @@ export type FileEntry = {
type: 'file' | 'directory';
size?: number;
modified?: number;
+ created?: number | null;
writable?: boolean;
};
diff --git a/src/lib/components/chat/FileNav.svelte b/src/lib/components/chat/FileNav.svelte
index 0630a36754..813e30749e 100644
--- a/src/lib/components/chat/FileNav.svelte
+++ b/src/lib/components/chat/FileNav.svelte
@@ -325,7 +325,7 @@
let error: string | null = null;
// ── Browser view state ──────────────────────────────────────────────
- type SortMode = 'name' | 'size' | 'date';
+ type SortMode = 'name' | 'size' | 'date' | 'created';
type BrowserRow = FileEntry & {
fullPath: string;
parentPath: string;
@@ -391,6 +391,13 @@
return [...items].sort((a, b) => {
// Directories always first
if (a.type !== b.type) return a.type === 'directory' ? -1 : 1;
+ if (mode === 'created') {
+ // Older servers and some filesystems do not expose creation time.
+ if (a.created == null && b.created != null) return 1;
+ if (a.created != null && b.created == null) return -1;
+ const cmp = (a.created ?? 0) - (b.created ?? 0) || a.name.localeCompare(b.name);
+ return asc ? cmp : -cmp;
+ }
if (mode === 'date') {
if (a.modified !== undefined && b.modified !== undefined) {
return asc ? a.modified - b.modified : b.modified - a.modified;
@@ -2047,6 +2054,7 @@
{canGoForward}
{sortBy}
{sortAsc}
+ showDateAdded
{showHidden}
viewMode={isSearching ? null : viewMode}
onViewModeChange={changeViewMode}
@@ -2632,7 +2640,8 @@
onSelect={handleSelect}
onLongPress={enterSelectionMode}
onToggleExpand={toggleExpand}
- showDate={sortBy === 'date'}
+ showDate={sortBy === 'date' || sortBy === 'created'}
+ dateField={sortBy === 'created' ? 'created' : 'modified'}
{showHidden}
parentWritable={currentWritable}
/>
diff --git a/src/lib/components/chat/FileNav/FileEntryRow.svelte b/src/lib/components/chat/FileNav/FileEntryRow.svelte
index 0e6cda7d6a..3da59f19df 100644
--- a/src/lib/components/chat/FileNav/FileEntryRow.svelte
+++ b/src/lib/components/chat/FileNav/FileEntryRow.svelte
@@ -58,9 +58,11 @@
export let onLongPress: () => void = () => {};
export let onToggleExpand: (path: string) => void = () => {};
export let showDate: boolean = false;
+ export let dateField: 'modified' | 'created' = 'modified';
export let showHidden: boolean = false;
export let parentWritable = true;
+ $: entryDate = entry[dateField];
$: entryPath =
fullPath ??
(entry.type === 'directory' ? `${currentPath}${entry.name}/` : `${currentPath}${entry.name}`);
@@ -511,16 +513,16 @@
{/if}
{:else if entry.type === 'file' && entry.size !== undefined && !renaming}
- {#if showDate && entry.modified}
+ {#if showDate && entryDate != null}
{formatRelativeTime(entry.modified)}{formatRelativeTime(entryDate)}
{/if}
{formatFileSize(entry.size)}
{:else if entry.type === 'directory' && !renaming}
- {#if showDate && entry.modified}
+ {#if showDate && entryDate != null}
{formatRelativeTime(entry.modified)}{formatRelativeTime(entryDate)}
{/if}
{#if terminalUrl}
diff --git a/src/lib/components/chat/FileNav/FileNavToolbar.svelte b/src/lib/components/chat/FileNav/FileNavToolbar.svelte
index 28352c56d5..8a2b1f0bdc 100644
--- a/src/lib/components/chat/FileNav/FileNavToolbar.svelte
+++ b/src/lib/components/chat/FileNav/FileNavToolbar.svelte
@@ -29,9 +29,10 @@
export let onToggleHidden: () => void = () => {};
// Sort controls
- export let sortBy: 'name' | 'size' | 'date' = 'name';
+ export let sortBy: 'name' | 'size' | 'date' | 'created' = 'name';
export let sortAsc: boolean = true;
- export let onSort: (mode: 'name' | 'size' | 'date') => void = () => {};
+ export let showDateAdded = false;
+ export let onSort: (mode: 'name' | 'size' | 'date' | 'created') => void = () => {};
// Back / forward navigation
export let canGoBack = false;
@@ -230,6 +231,28 @@
/>
{/if}
+ {#if showDateAdded}
+
+ {/if}
diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json
index 5d14d0291c..e2b6717c59 100644
--- a/src/lib/i18n/locales/en-GB/translation.json
+++ b/src/lib/i18n/locales/en-GB/translation.json
@@ -747,6 +747,7 @@
"Database": "",
"Datalab Marker API": "",
"Date is required": "",
+ "Date Added": "",
"Date Modified": "",
"Date range": "",
"Day": "",
diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json
index c8feaf2ab3..ff8bede83f 100644
--- a/src/lib/i18n/locales/en-US/translation.json
+++ b/src/lib/i18n/locales/en-US/translation.json
@@ -756,6 +756,7 @@
"Database": "",
"Datalab Marker API": "",
"Date is required": "",
+ "Date Added": "",
"Date Modified": "",
"Date range": "",
"Day": "",