From 7602bf22933aa91677850f8391400d907ae6f34d Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sat, 25 Apr 2026 22:33:37 -0400 Subject: [PATCH] feat(briefing): hard-cut tear-down MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backend: - Delete briefing services (pipeline, scheduler, conversations, profile, tools) - Delete routes/briefing.py + remove blueprint registration - Move _get_temp_unit into services/weather.get_temp_unit (reads top-level temp_unit setting) - Rename briefing_preferences.py → rss_filtering.py (functions are RSS-specific) - Strip briefing scheduler hooks from app.py - Strip briefing scheduler call from routes/settings.py - Update test imports (test_rss_service, test_tz_helpers) Frontend: - Delete BriefingView, BriefingSetupWizard, BriefingToolStatusRow - Strip /briefing route + nav links (AppHeader, KnowledgeView) - Strip Settings → Briefing tab + state + functions + imports - Strip briefing-intermediate handling from ChatMessage - Hide /news route + nav links (NewsView depended on briefing endpoints; orphaned in tree) - Drop unused useSettingsStore from AppHeader The Android BriefingScreen lives in a separate repo and is not touched here. Co-Authored-By: Claude Opus 4.7 --- frontend/src/components/AppHeader.vue | 6 - .../src/components/BriefingSetupWizard.vue | 413 --------- .../src/components/BriefingToolStatusRow.vue | 168 ---- frontend/src/components/ChatMessage.vue | 74 +- frontend/src/router/index.ts | 10 - frontend/src/views/BriefingView.vue | 828 ------------------ frontend/src/views/KnowledgeView.vue | 1 - frontend/src/views/SettingsView.vue | 369 +------- src/fabledassistant/app.py | 8 +- src/fabledassistant/routes/briefing.py | 705 --------------- src/fabledassistant/routes/settings.py | 13 +- .../services/briefing_conversations.py | 92 -- .../services/briefing_pipeline.py | 429 --------- .../services/briefing_profile.py | 80 -- .../services/briefing_scheduler.py | 625 ------------- .../services/briefing_tools.py | 9 - ...iefing_preferences.py => rss_filtering.py} | 0 src/fabledassistant/services/tools/weather.py | 6 +- src/fabledassistant/services/weather.py | 7 + tests/test_briefing_models.py | 40 - tests/test_briefing_pipeline.py | 39 - tests/test_briefing_scheduler.py | 114 --- tests/test_rss_service.py | 6 +- tests/test_tz_helpers.py | 12 +- 24 files changed, 28 insertions(+), 4026 deletions(-) delete mode 100644 frontend/src/components/BriefingSetupWizard.vue delete mode 100644 frontend/src/components/BriefingToolStatusRow.vue delete mode 100644 frontend/src/views/BriefingView.vue delete mode 100644 src/fabledassistant/routes/briefing.py delete mode 100644 src/fabledassistant/services/briefing_conversations.py delete mode 100644 src/fabledassistant/services/briefing_pipeline.py delete mode 100644 src/fabledassistant/services/briefing_profile.py delete mode 100644 src/fabledassistant/services/briefing_scheduler.py delete mode 100644 src/fabledassistant/services/briefing_tools.py rename src/fabledassistant/services/{briefing_preferences.py => rss_filtering.py} (100%) delete mode 100644 tests/test_briefing_models.py delete mode 100644 tests/test_briefing_pipeline.py delete mode 100644 tests/test_briefing_scheduler.py diff --git a/frontend/src/components/AppHeader.vue b/frontend/src/components/AppHeader.vue index d366490..07fad8a 100644 --- a/frontend/src/components/AppHeader.vue +++ b/frontend/src/components/AppHeader.vue @@ -5,7 +5,6 @@ import { useTheme } from "@/composables/useTheme"; import { useShortcuts } from "@/composables/useShortcuts"; import { useAuthStore } from "@/stores/auth"; import { useChatStore } from "@/stores/chat"; -import { useSettingsStore } from "@/stores/settings"; import AppLogo from "@/components/AppLogo.vue"; import NotificationBell from "@/components/NotificationBell.vue"; @@ -13,7 +12,6 @@ const { theme, toggleTheme } = useTheme(); const { toggleShortcuts } = useShortcuts(); const authStore = useAuthStore(); const chatStore = useChatStore(); -const settingsStore = useSettingsStore(); const router = useRouter(); const route = useRoute(); @@ -78,9 +76,7 @@ router.afterEach(() => { @@ -127,10 +123,8 @@ router.afterEach(() => {
Knowledge Chat - Briefing Calendar Projects - News Shared
Settings diff --git a/frontend/src/components/BriefingSetupWizard.vue b/frontend/src/components/BriefingSetupWizard.vue deleted file mode 100644 index 6f32449..0000000 --- a/frontend/src/components/BriefingSetupWizard.vue +++ /dev/null @@ -1,413 +0,0 @@ - - - - - diff --git a/frontend/src/components/BriefingToolStatusRow.vue b/frontend/src/components/BriefingToolStatusRow.vue deleted file mode 100644 index 7ba64c4..0000000 --- a/frontend/src/components/BriefingToolStatusRow.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - - - diff --git a/frontend/src/components/ChatMessage.vue b/frontend/src/components/ChatMessage.vue index ebb6f67..cec152a 100644 --- a/frontend/src/components/ChatMessage.vue +++ b/frontend/src/components/ChatMessage.vue @@ -3,16 +3,8 @@ import { computed } from "vue"; import { renderMarkdown } from "@/utils/markdown"; import { useSettingsStore } from "@/stores/settings"; import ToolCallCard from "@/components/ToolCallCard.vue"; -import BriefingToolStatusRow from "@/components/BriefingToolStatusRow.vue"; import type { Message } from "@/types/chat"; -const SLOT_LABELS: Record = { - compilation: "Full Briefing", - morning: "Morning Update", - midday: "Midday Update", - afternoon: "Afternoon Update", -}; - const settingsStore = useSettingsStore(); const props = defineProps<{ @@ -50,28 +42,7 @@ function formatMs(ms: number | null | undefined): string { } const metadata = computed(() => (props.message.metadata ?? {}) as Record); - -const isBriefingIntermediate = computed( - () => props.message.role === "assistant" && metadata.value.briefing_intermediate === true, -); - -const briefingSlot = computed(() => { - const slot = metadata.value.briefing_slot; - return typeof slot === "string" ? slot : null; -}); - -const slotLabel = computed(() => { - const slot = briefingSlot.value; - if (!slot) return null; - return SLOT_LABELS[slot] ?? slot; -}); - -const isSlotUpdate = computed( - () => - !isBriefingIntermediate.value && - briefingSlot.value != null && - briefingSlot.value !== "compilation", -); +void metadata; const timingParts = computed((): string[] => { const t = props.message.timing; @@ -89,16 +60,11 @@ const timingParts = computed((): string[] => {