feat(desktop): embed chat on Dashboard, move conversations to own page#6496
feat(desktop): embed chat on Dashboard, move conversations to own page#6496
Conversation
… page - Dashboard now hosts the chat (messages + sticky input) in place of the embedded conversations list, with a top/bottom gradient mask so messages fade into the background instead of clipping under the input - Conversations list is now its own sidebar page (replaces the standalone Chat sidebar item); Cmd+2 navigates to Conversations - navigateToChat notifications now route to the Dashboard - Goals widget empty state: drop the duplicate "Tap to add goal" tile and center the Generate AI Goal action (the header + button is the way in) - Trim the suggestion banner: remove the small "Suggested first ask" label to give the chat a few more vertical pixels - Dashboard chat input placeholder reads "Ask omi anything" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Greptile SummaryThis PR embeds the chat interface (messages + sticky input) directly on the Dashboard page, moves Conversations to its own sidebar page (replacing the standalone Chat sidebar item), simplifies the Goals widget empty state, trims the suggestion banner, and updates keyboard shortcuts so Cmd+2 navigates to Conversations. Confidence Score: 5/5Safe to merge — all remaining findings are P2 style suggestions with no runtime impact. The core navigation restructuring is correct: Conversations moves to index 1, Dashboard embeds the chat view, and keyboard shortcuts are updated consistently. The two P2 findings (stale ExportSidebarMock entry and automation "chat" routing) affect view exports and edge-case automation paths respectively, not the primary user flow. desktop/Desktop/Sources/ViewExporter.swift (stale sidebar mock) and desktop/Desktop/Sources/MainWindow/DesktopHomeView.swift (automation chat routing).
|
| Filename | Overview |
|---|---|
| desktop/Desktop/Sources/MainWindow/Pages/DashboardPage.swift | Embeds ChatMessagesView + ChatInputView on the Dashboard with gradient masking; adds citation tap handling and welcome message. Logic is clean and well-structured. |
| desktop/Desktop/Sources/MainWindow/DesktopHomeView.swift | Adds ConversationsPageHost at index 1; navigateToChat notification now routes to Dashboard. resolvedAutomationTarget("chat") still resolves to .chat (index 2, standalone ChatPage) rather than the Dashboard where chat now lives. |
| desktop/Desktop/Sources/MainWindow/SidebarView.swift | Chat removed from mainItems; Conversations replaces it. Tier-gating and loading states for Conversations are wired correctly. |
| desktop/Desktop/Sources/MainWindow/Components/GoalsWidget.swift | Empty state simplified to a single centered Generate AI Goal button; duplicate "Tap to add goal" tile removed. Change is clean. |
| desktop/Desktop/Sources/OmiApp.swift | Cmd+2 now maps to Conversations (rawValue 1); other shortcuts unchanged. Correct and consistent with new nav structure. |
| desktop/Desktop/Sources/ViewExporter.swift | ExportSidebarMock still includes a "Chat" entry at index 2 that no longer exists in the real sidebar's mainItems, causing view exports to show a stale nav structure. |
| desktop/Desktop/Sources/PostOnboardingPromptViews.swift | Suggestion banner trimmed (small label removed); no functional issues. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Sidebar Nav] --> B{selectedIndex}
B -->|0 - Dashboard| C[DashboardPage\nWidgets + Chat + Input]
B -->|1 - Conversations| D[ConversationsPageHost\nConversationsPage + detail nav]
B -->|2 - Chat| E[ChatPage\nStandalone — no sidebar entry]
B -->|3 - Memories| F[MemoriesPage]
B -->|4 - Tasks| G[TasksPage]
N1[.navigateToChat notification] -->|routes to index 0| C
N2[Cmd+2] -->|rawValue 1| D
N3[Automation 'chat'] -->|resolves to .chat index 2| E
style E fill:#555,color:#ccc,stroke:#888
style N3 stroke:#f90,stroke-width:2px
Comments Outside Diff (2)
-
desktop/Desktop/Sources/ViewExporter.swift, line 207 (link)Stale "Chat" entry in ExportSidebarMock
ExportSidebarMockstill lists"Chat"at index 2, but Chat was removed from the real sidebar'smainItemsin this PR. View exports generated with--export-fullpageswill render a sidebar that no longer matches the app, producing misleading screenshots. -
desktop/Desktop/Sources/MainWindow/DesktopHomeView.swift, line 512-513 (link)Automation "chat" target routes to standalone ChatPage, not Dashboard
resolvedAutomationTarget("chat")still returns.chat(index 2, the hidden standaloneChatPage), but chat now lives on the Dashboard (index 0). Any external automation or deep-link that navigates to"chat"will land on the no-longer-surfacedChatPageinstead of the embedded dashboard chat. Routing to.dashboard(or to.conversationsif the intent was the conversations list) would be more correct.
Reviews (1): Last reviewed commit: "feat(desktop): embed chat in Dashboard, ..." | Re-trigger Greptile
Test Results — Mac mini (nik/dashboard-chat)Build: ✅ Compiled and launched successfully as Auth: Bootstrapped from existing dev auth state; app signed in and loaded dashboard with 50 chat messages + ACP bridge started Checks
ScreenshotsScreen Recording permission not available in this terminal environment (SSH session); verified via log output and code review instead. Log evidence: All 8 checks PASS. Approving merge. |
The 'Fixed call recordings' entry is already in 0.11.275 release on main. Keep only the new dashboard chat entry in unreleased.
Summary
Test plan
🤖 Generated with Claude Code