personal memory agent
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: improve historical chat viewing experience

- Hide app bar for completed chats without conversation_id
- Show app bar with "Continue conversation..." for continuable chats
- Add completion message showing datetime and runtime for finished chats
- Style completion message with centered, italic, muted text

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

+38 -4
+38 -4
apps/chat/workspace.html
··· 187 187 } 188 188 .activity-indicator span:nth-child(1) { animation-delay: -0.32s; } 189 189 .activity-indicator span:nth-child(2) { animation-delay: -0.16s; } 190 + 191 + /* Completion message for finished chats */ 192 + .completion-message { 193 + text-align: center; 194 + padding: 1em; 195 + color: #888; 196 + font-size: 0.85em; 197 + font-style: italic; 198 + } 190 199 </style> 191 200 192 201 <div class="workspace-content"> ··· 514 523 515 524 // Check if we can continue the conversation 516 525 const finishEvent = events.find(e => e.event === 'finish'); 517 - if (finishEvent && finishEvent.conversation_id && input) { 518 - input.disabled = false; 519 - input.placeholder = 'Continue conversation...'; 520 - input.dataset.continueAgent = agentId; 526 + const startEvent = events.find(e => e.event === 'start'); 527 + const appBar = document.querySelector('.app-bar'); 528 + 529 + if (finishEvent && finishEvent.conversation_id) { 530 + // Can continue - show app bar 531 + if (appBar) appBar.style.display = ''; 532 + if (input) { 533 + input.disabled = false; 534 + input.placeholder = 'Continue conversation...'; 535 + input.dataset.continueAgent = agentId; 536 + } 537 + } else { 538 + // Can't continue - hide app bar and show completion message 539 + if (appBar) appBar.style.display = 'none'; 540 + 541 + // Add completion message 542 + if (finishEvent && startEvent) { 543 + const startTime = new Date(startEvent.ts); 544 + const endTime = new Date(finishEvent.ts); 545 + const runtime = ((endTime - startTime) / 1000).toFixed(1); 546 + const dateStr = endTime.toLocaleString('en-US', { 547 + month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' 548 + }); 549 + 550 + const completionDiv = document.createElement('div'); 551 + completionDiv.className = 'completion-message'; 552 + completionDiv.textContent = `Chat completed ${dateStr} after ${runtime}s`; 553 + messagesDiv.appendChild(completionDiv); 554 + } 521 555 } 522 556 } 523 557