From c71f18d5c2fbbf02254037227f38bdbba2e15b7d Mon Sep 17 00:00:00 2001 From: Andrew Beal Date: Sat, 18 Oct 2025 00:11:47 +0100 Subject: [PATCH] fix: use tick() for assistantMessageAction and update edit-mode accent colors - Wrap assistantMessageAction in tick() to resolve race condition with streaming indicator removal - Replace interactive-accent with alt-interactive-accent for edit-mode UI elements - Add alt-interactive-accent CSS variables as color-mixed variants of interactive-accent --- Components/ChatArea.svelte | 6 +++++- Components/ChatWindow.svelte | 10 +++++----- Components/StreamingIndicator.svelte | 2 +- styles.css | 10 ++++++++++ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/Components/ChatArea.svelte b/Components/ChatArea.svelte index 286e02a..67d1509 100644 --- a/Components/ChatArea.svelte +++ b/Components/ChatArea.svelte @@ -24,7 +24,11 @@ if (lastAssistantMessageElement && lastAssistantMessageElement.offsetHeight < chatContainer.offsetHeight - parseFloat(getComputedStyle(chatContainer).padding) * 2) { // Recalculate padding when streaming ends to fix race condition with streaming indicator removal - assistantMessageAction(lastAssistantMessageElement); + tick().then(() => { + if (lastAssistantMessageElement) { + assistantMessageAction(lastAssistantMessageElement); + } + }); // use an interval to complete scrolling once the dom has finished updating const scrollInterval: number = plugin.registerInterval(window.setInterval(() => { diff --git a/Components/ChatWindow.svelte b/Components/ChatWindow.svelte index ed7e426..5a97ba4 100644 --- a/Components/ChatWindow.svelte +++ b/Components/ChatWindow.svelte @@ -253,7 +253,7 @@ } #input-container.edit-mode { - border-color: var(--interactive-accent); + border-color: var(--alt-interactive-accent); transition: border-color 0.5s ease-out; } @@ -279,8 +279,8 @@ } #input-field.edit-mode:focus { - border-color: var(--interactive-accent); - box-shadow: 0px 0px 3px 1px var(--interactive-accent); + border-color: var(--alt-interactive-accent); + box-shadow: 0px 0px 3px 1px var(--alt-interactive-accent); transition: border-color 0.5s ease-out; } @@ -320,11 +320,11 @@ } #submit-button.edit-mode { - background-color: var(--interactive-accent); + background-color: var(--alt-interactive-accent); } #submit-button.edit-mode:not(:disabled):hover { cursor: pointer; - background-color: var(--interactive-accent-hover); + background-color: var(--alt-interactive-accent-hover); } \ No newline at end of file diff --git a/Components/StreamingIndicator.svelte b/Components/StreamingIndicator.svelte index f160ce9..2f6cf6a 100644 --- a/Components/StreamingIndicator.svelte +++ b/Components/StreamingIndicator.svelte @@ -31,7 +31,7 @@ } .container.edit-mode { - --streaming-color: var(--interactive-accent); + --streaming-color: var(--alt-interactive-accent); } .📦 { diff --git a/styles.css b/styles.css index 272af8a..10f2e9f 100644 --- a/styles.css +++ b/styles.css @@ -115,6 +115,16 @@ body { --checkbox-border: var(--background-modifier-border); --checkbox-checked-bg: var(--interactive-accent); --footnote-border: var(--background-modifier-border); + --alt-interactive-accent: color-mix( + in hsl shorter hue, + var(--interactive-accent) 50%, + hsl(180, 100%, 50%) 50% + ); + --alt-interactive-accent-hover: color-mix( + in hsl shorter hue, + var(--interactive-accent-hover) 50%, + hsl(180 100% 50%) 50% + ); } /* ============================== */