diff --git a/src/client/components/SessionList.tsx b/src/client/components/SessionList.tsx index eb4f90a..0de3bf9 100644 --- a/src/client/components/SessionList.tsx +++ b/src/client/components/SessionList.tsx @@ -96,6 +96,12 @@ export function SessionList({ sessions, loading, selectedId, onSelect }: Props) {formatDate(session.modified || session.created)} · {session.messageCount} msgs + {session.duration && session.duration > 0 && ( + <> + · + {formatSessionDuration(session.duration)} + + )} ); @@ -154,17 +160,24 @@ function formatProjectName(project: string): string { return project; } +function formatSessionDuration(ms: number): string { + const minutes = Math.floor(ms / 60000); + if (minutes < 1) return "<1m"; + if (minutes < 60) return `${minutes}m`; + const hours = Math.floor(minutes / 60); + const rem = minutes % 60; + if (rem === 0) return `${hours}h`; + return `${hours}h ${rem}m`; +} + function formatDate(dateStr: string): string { if (!dateStr) return ""; - try { - const d = new Date(dateStr); - return d.toLocaleDateString(undefined, { - month: "short", - day: "numeric", - hour: "2-digit", - minute: "2-digit", - }); - } catch { - return dateStr; - } + const d = new Date(dateStr); + if (isNaN(d.getTime())) return dateStr; + return d.toLocaleDateString(undefined, { + month: "short", + day: "numeric", + hour: "2-digit", + minute: "2-digit", + }); }