feat: tabs seem to be working now with multi connections

This commit is contained in:
2026-01-20 10:52:44 -08:00
parent 6a811d2016
commit 861b44797e
14 changed files with 550 additions and 103 deletions
@@ -11,8 +11,19 @@
// Track which conversation actually has the Claude connection
let connectedConversationId: string | null = null;
// Track last seen message count for each conversation
let lastSeenMessageCount: Map<string, number> = new Map();
claudeStore.conversations.subscribe((convs) => {
conversations = convs;
// Update the last seen count for the active conversation
if (activeConversationId) {
const activeConv = convs.get(activeConversationId);
if (activeConv) {
lastSeenMessageCount.set(activeConversationId, activeConv.terminalLines.length);
}
}
});
claudeStore.activeConversationId.subscribe((id) => {
@@ -43,6 +54,14 @@
saveTabName();
}
await claudeStore.switchConversation(id);
// Mark messages as seen when switching to this tab
const conv = conversations.get(id);
if (conv) {
lastSeenMessageCount.set(id, conv.terminalLines.length);
// Trigger reactivity
lastSeenMessageCount = lastSeenMessageCount;
}
}
function deleteTab(id: string, event: MouseEvent) {
@@ -79,6 +98,12 @@
}
}
function hasUnreadMessages(id: string, conversation: Conversation): boolean {
if (id === activeConversationId) return false; // Active tab never has unread
const lastSeen = lastSeenMessageCount.get(id) || 0;
return conversation.terminalLines.length > lastSeen;
}
function handleKeydown(event: KeyboardEvent) {
if (event.key === "Enter") {
saveTabName();
@@ -171,6 +196,12 @@
(active)
</span>
{/if}
{#if hasUnreadMessages(id, conversation)}
<div
class="absolute -top-1 -right-1 w-2 h-2 rounded-full bg-blue-500 animate-pulse"
title="New messages"
/>
{/if}
</div>
{/if}