fix: complete truncated GeminiPanel template — add chat UI and input bindings
All checks were successful
Build & Sign Wraith / Build Windows + Sign (push) Successful in 3m6s

The template was cut off mid-attribute, missing the message list rendering,
chat input with @keyup.enter="handleSend", and send button. This caused
vue-tsc to flag handleSend as unused, breaking CI.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vantz Stockwell 2026-03-24 16:41:31 -04:00
parent e28d0f65cd
commit 9aa911f7b8

View File

@ -86,5 +86,39 @@ onMounted(checkAuth);
<template v-else> <template v-else>
<div class="flex-1 overflow-y-auto p-3 space-y-4"> <div class="flex-1 overflow-y-auto p-3 space-y-4">
<div v-for="(msg, i) in messages" :key="i" <div v-if="messages.length === 0" class="text-center text-[10px] text-[var(--wraith-text-muted)] pt-8">
:class="[text-xs <p class="mb-1">Gemini XO ready.</p>
<p>Ask me anything about your sessions.</p>
</div>
<div v-for="(msg, i) in messages" :key="i"
:class="['text-xs rounded-lg px-3 py-2 max-w-[90%]',
msg.role === 'user' ? 'bg-[var(--wraith-accent-blue)]/15 text-[var(--wraith-text-primary)] ml-auto' : '',
msg.role === 'model' ? 'bg-[var(--wraith-bg-tertiary)] text-[var(--wraith-text-primary)]' : '',
msg.role === 'error' ? 'bg-red-500/15 text-red-400' : '']">
{{ msg.content }}
</div>
<div v-if="loading" class="text-xs text-[var(--wraith-text-muted)] animate-pulse">Thinking...</div>
</div>
<div class="p-3 border-t border-[var(--wraith-border)]">
<div class="flex gap-2">
<input
v-model="input"
type="text"
placeholder="Ask the XO..."
class="flex-1 bg-[var(--wraith-bg-tertiary)] border border-[var(--wraith-border)] rounded px-2 py-1.5 text-xs outline-none focus:border-[var(--wraith-accent-blue)]"
@keyup.enter="handleSend"
:disabled="loading"
/>
<button
@click="handleSend"
:disabled="loading || !input.trim()"
class="px-3 py-1.5 bg-[var(--wraith-accent-blue)] text-black font-bold rounded text-xs disabled:opacity-40"
>
&gt;
</button>
</div>
</div>
</template>
</div>
</template>