From f76266fa569551098c11d2719e55cf1c1db12438 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sun, 22 Feb 2026 22:31:54 -0500 Subject: [PATCH] Update summary.md for Phase 16 Co-Authored-By: Claude Sonnet 4.6 --- summary.md | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/summary.md b/summary.md index fbafa8d..8707f76 100644 --- a/summary.md +++ b/summary.md @@ -12,7 +12,7 @@ > Include file-level details in the commit body when the change is non-trivial. ## Last Updated -2026-02-22 — Phase 15: Production deployment hardening (proxy headers, secure cookies, IP in audit logs) +2026-02-22 — Phase 16: Dashboard redesign (chat-first, two-column task/notes grid) ## Project Overview Fabled Assistant is a self-hosted note-taking and task-tracking application with @@ -336,7 +336,7 @@ fabledassistant/ │ │ ├── RegisterInviteView.vue # Invitation-based registration: validates token, creates account with pre-set email │ │ ├── UserManagementView.vue # Admin user management: registration toggle, invitations (send/revoke), user list with delete │ │ ├── ChatView.vue # Dedicated /chat page: responsive sidebar (overlay on mobile), bubble messages, note picker, persistent context sidebar (right panel, hidden mobile), model selector in header - │ │ ├── HomeView.vue # Actionable dashboard: overdue, due today, due this week, high priority, in progress tasks; recent chats with inline chat input; recently edited notes; model warming on mount + │ │ ├── HomeView.vue # Chat-first dashboard: quick actions + chat widget (top, full-width), inline response panel, two-column grid (3fr tasks / 2fr notes); task sections: Overdue, Due Today, Due This Week, High Priority, In Progress, Other (capped 10, due-dated first); 8 recent notes; model warming on mount │ │ ├── SettingsView.vue # Settings page: assistant name, model catalog, data export/restore (admin) │ │ ├── NotesListView.vue # Note list: search, sort, tag filter pills, pagination │ │ ├── NoteEditorView.vue # Create/edit: Tiptap editor, sticky toolbar, AI Assist panel (right-side 320px, collapsible), line-level diff view, Proofread action, floating inline ✨ pill on text selection, LLM tag suggestions, Ctrl+S, auto-save (5min), unsaved guard; styles from editor-shared.css @@ -532,25 +532,21 @@ When adding a new migration, follow these conventions: - Search (ILIKE), sort, tag filter pills, pagination on list views ### Dashboard -- Actionable home page with 5 task sections: Overdue, Due Today, Due This Week, High Priority, In Progress -- Priority-aware sorting (priority desc → due date asc) within each section -- Cascading deduplication — tasks appear only in their highest-priority section -- `due_before`/`due_after` query params on `/api/tasks` for date-range filtering -- Recent chats and recently edited notes sections -- All task sections hidden when empty; marking done removes from all lists -- **Inline chat widget:** Submitting a message streams the response inline on the dashboard — no - navigation to `/chat`. Streaming tool calls shown live; final response captured from store after SSE. -- **Quick action chips:** Pre-defined prompts above the chat input for common queries. -- **Conversational detection (Option A):** When the response has no tool calls (pure text), the - "Continue in Chat" link becomes a prominent filled button labeled "Continue this conversation →", - signalling that the inline response is just a snippet of a longer exchange. -- **Auto-focus:** Dashboard chat input gains focus on page mount (via `defineExpose({ focus })` on - `DashboardChatInput` and a template ref in `HomeView`). -- **Keyboard shortcut — Escape in ChatView:** Cascade close: note picker → mobile sidebar → clear - textarea if non-empty → navigate to `/` home. -- **Keyboard shortcuts overlay:** Press `?` (when not in a text input) or click the `?` button in - the nav bar to open a panel listing all shortcuts. Escape or click-outside closes it. State shared - via `useShortcuts` composable (`frontend/src/composables/useShortcuts.ts`). +- **Chat-first layout:** Quick action chips + chat input at top (full width); no page title. + Inline streaming response (full width) appears between widget and content grid when active. +- **Two-column grid:** Tasks left (3fr) / Recent Notes right (2fr); collapses to single column on mobile. Max-width 1400px. +- **Left column — 6 task sections** in urgency order, all cascading-deduplicated: + Overdue (red border), Due Today, Due This Week, High Priority (amber border), In Progress, Other (capped at 10). + "Other" = broad fetch of all non-done tasks deduped against shown sections; due-dated items first (asc), then undated by priority desc. +- **Right column** — 8 most recently edited notes. +- Priority-aware sorting (priority desc → due date asc) within each section. +- All sections hidden when empty; marking a task done removes it from all lists. +- **Inline chat:** Streams response inline — no navigation to `/chat`. Tool calls shown live. + Conversational (no tool calls) response promotes "Continue this conversation →" button. +- **Quick action chips:** Pre-defined prompts above the chat input. +- **Auto-focus:** Dashboard chat input gains focus on page mount. +- **Keyboard shortcut — Escape in ChatView:** Cascade close: note picker → mobile sidebar → clear textarea → navigate to `/` home. +- **Keyboard shortcuts overlay:** Press `?` or click `?` in nav bar. State shared via `useShortcuts` composable. ### LLM Chat - Ollama integration via async HTTP (httpx), default model qwen3 (better tool support than mistral), auto-pull on startup