From 982a0c6aa676b86d366c92083ed838b69b4ac8e1 Mon Sep 17 00:00:00 2001 From: Dorian Date: Wed, 4 Mar 2026 18:14:27 +0000 Subject: [PATCH] fix(app): news tab shows eagerly for news queries, populates async MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- packages/app/src/composables/useContentPanel.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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)