diff --git a/frontend/src/components/ToolCallCard.vue b/frontend/src/components/ToolCallCard.vue index 3c1e955..f1723c8 100644 --- a/frontend/src/components/ToolCallCard.vue +++ b/frontend/src/components/ToolCallCard.vue @@ -1,7 +1,9 @@ @@ -316,12 +338,26 @@ async function applyTag(tag: string) { - {{ eventData.title }} - {{ formatEventTime(eventData.start) }} + + + {{ eventData.title }} + {{ formatEventTime(eventData.start_dt) }} + + + {{ eventData.title }} + {{ formatEventTime(eventData.start_dt) }} + - {{ updatedEvent.title }} - {{ formatEventTime(updatedEvent.start) }} + + + {{ updatedEvent.title }} + {{ formatEventTime(updatedEvent.start_dt) }} + + + {{ updatedEvent.title }} + {{ formatEventTime(updatedEvent.start_dt) }} + {{ deletedEvent.title }} @@ -410,11 +446,21 @@ async function applyTag(tag: string) { - - - {{ ev.title }} - {{ formatEventTime(ev.start) }} - + + + + + {{ ev.title }} + {{ formatEventTime(ev.start_dt) }} + {{ ev.location }} + + +{{ eventList.length - 5 }} more @@ -469,6 +515,17 @@ async function applyTag(tag: string) { + + + diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue index 7fd67d7..8be4ace 100644 --- a/frontend/src/views/HomeView.vue +++ b/frontend/src/views/HomeView.vue @@ -1,15 +1,17 @@ @@ -290,6 +349,33 @@ function clearDashboardResponse() { + + + + Upcoming + Calendar → + + + + + + {{ ev.title }} + {{ formatUpcomingTime(ev) }} + {{ ev.location }} + + + + +{{ upcomingEvents.length - 6 }} more — + view all + + + + @@ -466,6 +552,17 @@ function clearDashboardResponse() { + + + diff --git a/src/fabledassistant/services/briefing_pipeline.py b/src/fabledassistant/services/briefing_pipeline.py index ffcdb7a..bbe68a4 100644 --- a/src/fabledassistant/services/briefing_pipeline.py +++ b/src/fabledassistant/services/briefing_pipeline.py @@ -162,17 +162,36 @@ async def _gather_internal(user_id: int) -> dict: logger.warning("Failed to gather tasks for briefing", exc_info=True) overdue, due_today, high_priority = [], [], [] - # Calendar events today - calendar_events = [] + # Calendar events today — internal store + calendar_events: list[str] = [] + try: + from fabledassistant.services.events import list_events as list_internal_events + today_date = date.today() + day_start = datetime(today_date.year, today_date.month, today_date.day, 0, 0, 0) + day_end = datetime(today_date.year, today_date.month, today_date.day, 23, 59, 59) + internal_events = await list_internal_events( + user_id=user_id, date_from=day_start, date_to=day_end + ) + for e in internal_events: + if e.all_day: + time_str = "all day" + elif e.start_dt: + time_str = e.start_dt.strftime("%-I:%M %p") + else: + time_str = "unknown time" + calendar_events.append(f"{e.title} at {time_str}") + except Exception: + logger.warning("Failed to gather internal calendar events for briefing", exc_info=True) + # Also pull CalDAV events (deduped) try: if await is_caldav_configured(user_id): - events = await list_events(user_id, start=today, end=today) - calendar_events = [ - f"{e.get('summary', 'Event')} at {e.get('dtstart', 'unknown time')}" - for e in (events or []) - ] + caldav_evs = await list_events(user_id, start=today, end=today) + for e in (caldav_evs or []): + summary = f"{e.get('summary', 'Event')} at {e.get('dtstart', 'unknown time')}" + if summary not in calendar_events: + calendar_events.append(summary) except Exception: - logger.warning("Failed to gather calendar events for briefing", exc_info=True) + logger.warning("Failed to gather CalDAV calendar events for briefing", exc_info=True) # Projects: active projects projects_summary = []