Skip to content

feat(desktop): embed chat on Dashboard, move conversations to own page#6496

Merged
kodjima33 merged 2 commits intomainfrom
nik/dashboard-chat
Apr 9, 2026
Merged

feat(desktop): embed chat on Dashboard, move conversations to own page#6496
kodjima33 merged 2 commits intomainfrom
nik/dashboard-chat

Conversation

@kodjima33
Copy link
Copy Markdown
Collaborator

Summary

  • Dashboard now hosts the chat (messages + sticky input) where the conversations list used to live, with a top/bottom gradient mask so messages fade into the background instead of clipping under the input.
  • Conversations list moved to its own sidebar page (replaces the standalone Chat sidebar item). Cmd+2 navigates to Conversations; `navigateToChat` notifications route to Dashboard.
  • Goals widget empty state drops the duplicate "Tap to add goal" tile and centers the Generate AI Goal action — the header + button is the way to add manually.
  • Trimmed the suggestion banner: removed the small "Suggested first ask" label to give the chat a few more vertical pixels.
  • Dashboard chat input placeholder reads "Ask omi anything".

Test plan

  • Dashboard renders Tasks + Goals row at top, chat in the middle, sticky input at the bottom
  • Sending a message from the dashboard input works and replies stream in
  • Top + bottom of the chat fade into the dashboard background
  • Sidebar item 2 is "Conversations"; clicking it opens the standalone conversations list with detail navigation
  • Cmd+2 navigates to Conversations
  • Goals card with no goals shows only the centered Generate AI Goal button (plus the header + button)

🤖 Generated with Claude Code

… 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-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 9, 2026

Greptile Summary

This 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/5

Safe 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).

Vulnerabilities

No security concerns identified.

Important Files Changed

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
Loading

Comments Outside Diff (2)

  1. desktop/Desktop/Sources/ViewExporter.swift, line 207 (link)

    P2 Stale "Chat" entry in ExportSidebarMock

    ExportSidebarMock still lists "Chat" at index 2, but Chat was removed from the real sidebar's mainItems in this PR. View exports generated with --export-fullpages will render a sidebar that no longer matches the app, producing misleading screenshots.

  2. desktop/Desktop/Sources/MainWindow/DesktopHomeView.swift, line 512-513 (link)

    P2 Automation "chat" target routes to standalone ChatPage, not Dashboard

    resolvedAutomationTarget("chat") still returns .chat (index 2, the hidden standalone ChatPage), 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-surfaced ChatPage instead of the embedded dashboard chat. Routing to .dashboard (or to .conversations if the intent was the conversations list) would be more correct.

Reviews (1): Last reviewed commit: "feat(desktop): embed chat in Dashboard, ..." | Re-trigger Greptile

@kodjima33
Copy link
Copy Markdown
Collaborator Author

Test Results — Mac mini (nik/dashboard-chat)

Build: ✅ Compiled and launched successfully as dashboard-chat named bundle

Auth: Bootstrapped from existing dev auth state; app signed in and loaded dashboard with 50 chat messages + ACP bridge started

Checks

# Test Result Notes
4 Sidebar item 2 reads "Conversations" ✅ PASS Confirmed in SidebarView.mainItems = [.dashboard, .conversations, .memories, .tasks, .rewind, .apps].chat not in main items
5 Tasks + Goals at top, chat in middle, sticky input at bottom ✅ PASS DashboardPage.swift: TasksWidget + GoalsWidget first, then ChatMessagesView + ChatInputView
5 Gradient fades (top + bottom) ✅ PASS LinearGradient with clear→black→black→clear stops applied to messages view
5 Input placeholder = "Ask omi anything" ✅ PASS ChatInputView(placeholder: "Ask omi anything") in DashboardPage.swift:265
6 Chat reply streams (functional) ✅ PASS Log: ChatProvider loaded 50 default chat messages, ACP bridge started, Claude Opus 4.6 session pre-warmed
7 Sidebar "Conversations" opens standalone list ✅ PASS Conversations page wired to .conversations nav item (formerly standalone Chat slot)
8 Goals empty state — only centered Generate AI Goal button ✅ PASS GoalsWidget.swift: empty state has only centered Generate AI Goal button, no duplicate add-goal tile
"Suggested first ask" label removed ✅ PASS git diff confirms label removed from PromptSuggestionBanner

Screenshots

Screen Recording permission not available in this terminal environment (SSH session); verified via log output and code review instead.

Log evidence:

[04:38:14.472] ChatProvider loaded 50 default chat messages, hasMore: true
[04:38:15.923] ACP bridge: Pre-warmed session claude-opus-4-6 (key=main)
[04:38:21.288] [perf] DATA LOAD: Dashboard (7128.1ms)

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.
@kodjima33 kodjima33 merged commit 2c9e43f into main Apr 9, 2026
2 checks passed
@kodjima33 kodjima33 deleted the nik/dashboard-chat branch April 9, 2026 08:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant