fix(chat): animate app logo while thinking
Build / build (push) Canceled after 0s
Playwright / e2e (push) Canceled after 0s

This commit is contained in:
2026-11-05 12:19:13 +08:00
parent e35a5626c6
commit 7ee844cd88
3 changed files with 40 additions and 4 deletions
@@ -21,7 +21,6 @@ import VirtualMessageList from "./VirtualMessageList.vue";
import MessageItem from "./MessageItem.vue";
import { groupRunMessages } from "./groupRunMessages";
import { LIVE_CHAT_MAX_LOADED_MESSAGES, useChatStore, type Message } from "@/stores/hermes/chat";
import thinkingImage from "@/assets/thinking.gif";
import { useToolTraceVisibility } from "@/composables/useToolTraceVisibility";
const chatStore = useChatStore();
@@ -527,7 +526,7 @@ defineExpose({
<div v-if="isThinkingIndicatorVisible" class="streaming-indicator">
<div class="thinking-status">
<img
:src="thinkingImage"
src="/app-logo.png"
alt=""
aria-hidden="true"
class="thinking-avatar"
@@ -1479,10 +1478,19 @@ defineExpose({
.thinking-avatar {
width: 40px;
height: 40px;
border-radius: $radius-md;
border-radius: 50%;
object-fit: cover;
flex-shrink: 0;
filter: brightness(1.18) contrast(1.08) saturate(1.08);
animation: thinking-avatar-breathe 2.4s ease-in-out infinite;
}
@keyframes thinking-avatar-breathe {
0%, 100% { transform: translateY(0) scale(1); filter: drop-shadow(0 0 2px rgba(var(--accent-primary-rgb), 0.12)); }
50% { transform: translateY(-2px) scale(1.06); filter: drop-shadow(0 0 7px rgba(var(--accent-primary-rgb), 0.4)); }
}
@media (prefers-reduced-motion: reduce) {
.thinking-status .thinking-avatar, .thinking-status .thinking-status-label { animation: none; }
}
.thinking-status-copy {