{#if isDragOver}
📎

Dateien hier ablegen

Code, Text, Bilder — Claude analysiert alles

{/if}

💬 Chat

{$messages.length} Nachrichten 20000} class:danger={estimatedTokens > TOKEN_WARNING_THRESHOLD}> ~{(estimatedTokens / 1000).toFixed(1)}k Token {#if !detached} {:else} {/if}
{#if $messages.length === 0}
🤖

Starte eine Konversation mit Claude.

Enter/Ctrl+Enter = Senden, Shift+Enter = Neue Zeile, Ctrl+K = Quick-Actions, Escape = Stopp

{:else} {#each $messages as message, index}
{#if message.role === 'user' && message.queued} Du wartet {:else if message.role === 'user'} Du {:else if message.role === 'assistant'} {#if message.model}{message.model.replace('claude-', '').replace(/-\d{8}$/, '').replace(/(\D)-(\d)/g, '$1 $2').replace(/(\d)-(\d)/g, '$1.$2').replace(/\b[a-z]/g, c => c.toUpperCase())}{:else}Claude{/if} {:else} System {/if}
{#if message.role === 'user' && !$isProcessing && editingMessageId !== message.id} {/if} {#if message.role === 'assistant' && !$isProcessing && isLastAssistantMessage(index) && message.content} {/if} {#if message.content && message.role !== 'system'} {/if} {message.timestamp.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' })} Uhr
{#if editingMessageId === message.id}
{:else if message.role === 'assistant'} {#if message.content} {#if shouldCollapse(message.content, 'assistant') && !expandedMessages.includes(message.id) && !($isProcessing && isLastAssistantMessage(index))}
{@html renderMarkdown(message.content.split('\n').slice(0, COLLAPSE_LINES_ASSISTANT).join('\n') + '\n...')}
{:else} {@html renderMarkdown(message.content)} {#if shouldCollapse(message.content, 'assistant') && !($isProcessing && isLastAssistantMessage(index))} {/if} {/if} {:else if $isProcessing}
{#if $currentTool} {getToolIcon($currentTool.tool)} {getToolLabel($currentTool.tool, $currentTool.input)} {:else} {getPhaseIcon($processingPhase)} {getPhaseLabel($processingPhase)} {/if}
{/if} {:else} {#if message.role === 'user' && message.content && shouldCollapse(message.content, 'user') && !expandedMessages.includes(message.id)}
{message.content.split('\n').slice(0, COLLAPSE_LINES_USER).join('\n')}{'\n...'}
{:else} {message.content} {#if message.role === 'user' && message.content && shouldCollapse(message.content, 'user')} {/if} {/if} {/if}
{/each} {/if} {#if $isProcessing} {@const lastMsg = $messages.at(-1)} {#if !lastMsg || lastMsg.role !== 'assistant'}
{'\u{1F916}'} Claude
{#if $currentTool} {getToolIcon($currentTool.tool)} {getToolLabel($currentTool.tool, $currentTool.input)} {:else} {getPhaseIcon($processingPhase)} {getPhaseLabel($processingPhase)} {/if}
{/if} {/if}
{#if $agentMode && $agentMode !== 'solo'}
{#if $agentMode === 'handlanger'}👷 {:else if $agentMode === 'experten'}🎓 {:else if $agentMode === 'auto'}🤖 {/if} {#if $agentMode === 'handlanger'}Handlanger-Modus {:else if $agentMode === 'experten'}Experten-Modus {:else if $agentMode === 'auto'}Auto-Modus {/if} {#if $processingPhase !== 'idle'} — {#if $processingPhase === 'thinking'}denkt nach... {:else if $processingPhase === 'streaming'}schreibt... {:else if $processingPhase === 'tool-use'}nutzt Tool... {:else if $processingPhase === 'subagent'}delegiert... {/if} {/if}
{/if} {#if liveTranscript}
🎤 {liveTranscript}
{/if} {#if $messageQueue.length > 0}
📬 {$messageQueue.length} Nachricht{$messageQueue.length > 1 ? 'en' : ''} in der Queue
{/if}
{#if rememberDialogOpen} {/if} {#if showCompactingDialog} {/if}