From 687c41e83809ef05711b6c2111a96b4beb470c60 Mon Sep 17 00:00:00 2001 From: CJ Winslow Date: Sun, 18 Jan 2026 03:12:04 -0800 Subject: [PATCH] TUI: display relative time for session updates in picker Show "just now", "5m ago", "Yesterday" etc. instead of absolute timestamps for better readability in the session picker list. --- src/tui/tui-command-handlers.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/tui/tui-command-handlers.ts b/src/tui/tui-command-handlers.ts index 2451e5d61..88eea609f 100644 --- a/src/tui/tui-command-handlers.ts +++ b/src/tui/tui-command-handlers.ts @@ -39,6 +39,22 @@ type CommandHandlerContext = { formatSessionKey: (key: string) => string; }; +function formatRelativeTime(timestamp: number): string { + const now = Date.now(); + const diff = now - timestamp; + const seconds = Math.floor(diff / 1000); + const minutes = Math.floor(seconds / 60); + const hours = Math.floor(minutes / 60); + const days = Math.floor(hours / 24); + + if (seconds < 60) return "just now"; + if (minutes < 60) return `${minutes}m ago`; + if (hours < 24) return `${hours}h ago`; + if (days === 1) return "Yesterday"; + if (days < 7) return `${days}d ago`; + return new Date(timestamp).toLocaleDateString(undefined, { month: "short", day: "numeric" }); +} + export function createCommandHandlers(context: CommandHandlerContext) { const { client, @@ -147,7 +163,7 @@ export function createCommandHandlers(context: CommandHandlerContext) { return { value: session.key, label: title ? `${title} (${formattedKey})` : formattedKey, - description: session.updatedAt ? new Date(session.updatedAt).toLocaleString() : "", + description: session.updatedAt ? formatRelativeTime(session.updatedAt) : "", searchText: [ session.displayName, session.label,