diff --git a/frontend/src/types/news.ts b/frontend/src/types/news.ts index 93e371e..3371e36 100644 --- a/frontend/src/types/news.ts +++ b/frontend/src/types/news.ts @@ -3,6 +3,7 @@ export interface NewsItem { title: string url: string snippet: string + content: string published_at: string | null topics: string[] source: string diff --git a/frontend/src/views/BriefingView.vue b/frontend/src/views/BriefingView.vue index 674dec3..0de15f3 100644 --- a/frontend/src/views/BriefingView.vue +++ b/frontend/src/views/BriefingView.vue @@ -176,12 +176,25 @@ async function send(overrideText?: string) { } async function discussArticle(item: NewsItem) { - const snippet = item.snippet ? `\n\n"${item.snippet.slice(0, 400)}${item.snippet.length > 400 ? '…' : ''}"` : '' - const text = `Summarize the following article excerpt for me in a few sentences and share your thoughts. Do not use any research or search tools — just respond conversationally based on what I've shared below.\n\n**${item.title}**${snippet}\n\nSource: ${item.source}` - // Scroll the chat panel into view on narrow layouts, then send + const body = (item.content || item.snippet || '').trim() + const bodyBlock = body ? `\n\n---\n${body}\n---` : '' + const text = `Please summarize and share your thoughts on this article. Do not use any research or search tools — respond conversationally based only on the content below.\n\n**${item.title}**\nSource: ${item.source}${bodyBlock}` + + // Add the user message optimistically so it appears immediately + const optimisticMsg: BriefingMessage = { + id: Date.now(), + role: 'user', + content: text, + created_at: new Date().toISOString(), + } + messages.value = [...messages.value, optimisticMsg] + + // Scroll the chat panel into view await nextTick(() => { - document.querySelector('.briefing-chat')?.scrollIntoView({ behavior: 'smooth', block: 'nearest' }) + document.querySelector('.briefing-center')?.scrollIntoView({ behavior: 'smooth', block: 'nearest' }) + scrollToBottom() }) + await send(text) } diff --git a/src/fabledassistant/routes/briefing.py b/src/fabledassistant/routes/briefing.py index 5df7f8c..0ee9c70 100644 --- a/src/fabledassistant/routes/briefing.py +++ b/src/fabledassistant/routes/briefing.py @@ -388,6 +388,7 @@ async def list_news(): "title": r["title"], "url": r["url"], "snippet": (r["content"] or "")[:300], + "content": r["content"] or "", "published_at": r["published_at"].isoformat() if r["published_at"] else None, "topics": r["topics"] or [], "source": r["feed_title"],