fix(app): news tab shows eagerly for news queries, populates async

The news tab was missing because hasNews evaluated to false when web
search results hadn't arrived yet. Now shows the tab eagerly for news
queries — results populate when they arrive via the deep watcher.
Also fixes RSS late-insertion to place before the Prompt tab.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-04 18:14:27 +00:00
co-authored by Claude Opus 4.6
parent f0d4ae5acc
commit 982a0c6aa6
@@ -121,8 +121,9 @@ export function useContentPanel() {
// News = actual articles (web search + RSS from website domains)
const newsContext = isNewsQuery(userQuery) || isNewsLikeResponse(text)
const hasNews = (webResults.length > 0 || mergedWebsites.length > 0) && newsContext
const mergedNews = hasNews ? mergeNewsResults(webResults, panelRssArticles.value) : []
// Show news tab eagerly when query is news-like — results may arrive async
const hasNews = newsContext && (webResults.length > 0 || mergedWebsites.length > 0 || isNewsQuery(userQuery))
const mergedNews = mergeNewsResults(webResults, panelRssArticles.value)
if (mergedWebsites.length > 0 && newsContext) {
const urls = mergedWebsites.map((w) => w.url)
@@ -132,7 +133,13 @@ export function useContentPanel() {
const combined = mergeNewsResults(panelWebResults.value, articles)
panelWebResults.value = combined
if (!availableTabs.value.includes('news')) {
availableTabs.value = ['news', ...availableTabs.value]
// Insert before 'prompt' (which is always last)
const promptIdx = availableTabs.value.indexOf('prompt')
if (promptIdx >= 0) {
availableTabs.value = [...availableTabs.value.slice(0, promptIdx), 'news', ...availableTabs.value.slice(promptIdx)]
} else {
availableTabs.value = ['news', ...availableTabs.value]
}
activeTab.value = 'news'
}
const ctx = extractQueryContext(panelQuery.value)