diff --git a/src/viewer/index.html b/src/viewer/index.html index 551d016..2bdc687 100644 --- a/src/viewer/index.html +++ b/src/viewer/index.html @@ -1039,6 +1039,23 @@

agentmemory

if (!s) return ''; return s.length > n ? s.slice(0, n) + '...' : s; } + function sessionId(s) { + return s && s.id !== undefined && s.id !== null ? String(s.id) : ''; + } + function shortSessionId(s, n) { + var id = sessionId(s); + return id ? id.slice(0, n || 8) : ''; + } + function sessionDisplayName(s) { + var project = s && s.project ? String(s.project).split('/').pop() : ''; + if (project) return project; + return shortSessionId(s, 8) || 'Unknown session'; + } + function sessionLabel(s) { + var id = shortSessionId(s, 8); + var name = sessionDisplayName(s); + return id ? name + ' (' + id + ')' : name + ' (missing id)'; + } function debounce(fn, ms) { var t; return function() { @@ -1278,7 +1295,7 @@

agentmemory

html += ''; recent.forEach(function(s) { var statusBadge = s.status === 'active' ? 'badge-green' : s.status === 'completed' ? 'badge-blue' : 'badge-muted'; - html += ''; + html += ''; html += ''; html += ''; html += ''; @@ -2192,7 +2209,8 @@

agentmemory

if (sessions.length > 0 && !state.timeline.sessionId) { var sorted = sessions.slice().sort(function(a, b) { return (b.startedAt || '').localeCompare(a.startedAt || ''); }); - state.timeline.sessionId = sorted[0].id; + var firstSelectable = sorted.find(function(s) { return sessionId(s); }); + state.timeline.sessionId = firstSelectable ? sessionId(firstSelectable) : ''; } renderTimelineToolbar(sessions); @@ -2204,8 +2222,9 @@

agentmemory

var html = '
'; html += ''; html += '
ProjectStatusObsStarted
' + esc(s.project ? s.project.split('/').pop() : s.id.slice(0,8)) + '
' + esc(sessionDisplayName(s)) + '' + esc(s.status) + '' + (s.observationCount || 0) + '' + esc(shortTime(s.startedAt)) + '