From d312321ffac88648206b415b8126b7f2f0da6498 Mon Sep 17 00:00:00 2001 From: Ned Date: Fri, 22 May 2026 22:01:26 +0000 Subject: [PATCH] feat: refactor coach chat to ChatGPT-style Material You design - Replaced Gemini-style glass/blue aesthetic with clean Material You pink theme - ChatGPT-style message layout: user right-aligned, coach left-aligned with avatars - User avatar shows initials, coach avatar shows brain icon - Chat bubble design: rounded cards matching app theme (no glass/blur effects) - Clean textarea input with Enter to send, Shift+Enter for newlines - ChatGPT-style empty state with suggestion chips - Typing indicator with bouncing dots animation - Sidebar uses Material You surface/container colors - Status bar shows model name and ready/thinking state - Error messages styled as Material You error containers - Bottom hint text: 'coach can make mistakes' - All colors use CSS custom properties for accent theme consistency --- src/App.tsx | 260 ++++++++++++++++++++++++------------------- src/index.css | 299 ++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 362 insertions(+), 197 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index e69866c..56217b7 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1785,14 +1785,14 @@ function CoachView({ dashboard, entries, user }: { dashboard: Dashboard; entries if (!chatKey) { return ( -
+
-
-
); } + const userInitials = user.name + ? user.name.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2) + : (user.email?.[0] ?? "U").toUpperCase(); + return ( -
- + +
+
+ + + {busy ? "thinking" : "ready"} + + {OLLAMA_MODEL} +
+ +
+
+ {!visibleMessages.length ? ( +
+
+
+

how can I help?

+

ask about caffeine, sugar, spending, or your flavour patterns.

+
+ {quickPrompts.map((prompt) => ( + + ))} +
+
+ ) : ( + visibleMessages.map((message) => ( + toggleThinking(message.id)} + /> + )) + )} +
+
+
+ + {error && ( +
+
+ {error} +
+
)} - -
+ +
+
+ +