@@ -52,7 +52,7 @@ export function renderDashboardHtml(): string {
5252 .project-nav-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #58a6ff; font-weight: 600; }
5353 .project-nav-item.selected .project-nav-name { color: #79c0ff; }
5454 .project-nav-count { font-size: 0.7rem; padding: 1px 7px; border-radius: 9px; background: #30363d; color: #c9d1d9; }
55- .project-nav-running { width: 8px; height: 8px; border-radius: 50%; background: #1f6feb ; flex: 0 0 8px; }
55+ .project-nav-running { width: 8px; height: 8px; border-radius: 50%; background: #fe7d37 ; flex: 0 0 8px; box-shadow: 0 0 6px #fe7d3780 ; }
5656 .project { margin-bottom: 24px; border: 1px solid #30363d; border-radius: 8px; padding: 12px 16px; background: #161b22; }
5757 .project-header { font-weight: 600; font-size: 1.1rem; margin-bottom: 10px; color: #58a6ff; }
5858 .empty-state { padding: 24px; color: #8b949e; font-size: 0.9rem; text-align: center; }
@@ -179,6 +179,20 @@ export function renderDashboardHtml(): string {
179179 });
180180 }
181181
182+ function fmtTime(ts) {
183+ if (!ts || ts === 0) return '';
184+ var d = new Date(ts);
185+ var pad = function(n) { return n < 10 ? '0' + n : String(n); };
186+ var month = pad(d.getMonth() + 1);
187+ var day = pad(d.getDate());
188+ var year = d.getFullYear();
189+ var hours = d.getHours();
190+ var ampm = hours >= 12 ? 'PM' : 'AM';
191+ hours = hours % 12;
192+ if (hours === 0) hours = 12;
193+ return month + '-' + day + '-' + year + ' ' + hours + ':' + pad(d.getMinutes()) + ' ' + ampm;
194+ }
195+
182196 function statusClass(status) {
183197 return 'status-badge status-' + status;
184198 }
@@ -396,12 +410,20 @@ export function renderDashboardHtml(): string {
396410 infoTarget.appendChild(nameStrong);
397411
398412 var infoParts = [
413+ fmtTime(lp.startedAt),
399414 'phase: ' + lp.phase,
400415 'iteration ' + lp.iteration + '/' + lp.maxIterations,
401416 'section ' + lp.currentSectionIndex + '/' + lp.totalSections,
402417 ];
403418 if (dashLoop.duration) infoParts.push(dashLoop.duration);
404419 infoTarget.appendChild(document.createTextNode(' — ' + infoParts.join(', ')));
420+ if (lp.status !== 'running' && lp.completedAt) {
421+ infoTarget.appendChild(document.createTextNode(' — '));
422+ var doneSpan = document.createElement('span');
423+ doneSpan.className = 'dim';
424+ doneSpan.textContent = 'done: ' + fmtTime(lp.completedAt);
425+ infoTarget.appendChild(doneSpan);
426+ }
405427
406428 if (lp.terminationReason) {
407429 infoTarget.appendChild(document.createTextNode(' — '));
0 commit comments