draft); if ($content === '') { return; } $this->draft = ''; $this->foxIsThinking = true; // User-Nachricht synchron persistieren + broadcasten, // dann Verarbeitung an Queue weiterreichen. $userMessage = app(FoxAgent::class)->recordUserMessage($content); HandleUserMessage::dispatch($userMessage); $this->dispatch('message-sent'); } #[On('echo:fox,.message.created')] public function onBroadcastedMessage(): void { // Antwort kam via Reverb-WebSocket - "denkt..." ausblenden. $this->foxIsThinking = false; } #[On('voice-transcribed')] public function onVoiceTranscribed(string $text): void { $this->draft = $text; $this->send(); } public function render() { return view('livewire.chat', [ 'messages' => Message::latest()->limit(80)->get()->reverse()->values(), ]); } }