diff --git a/packages/app/src/composables/useContentPanel.ts b/packages/app/src/composables/useContentPanel.ts index 47eeb79a..42dd3c06 100644 --- a/packages/app/src/composables/useContentPanel.ts +++ b/packages/app/src/composables/useContentPanel.ts @@ -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)