diff --git a/static/src/components/chat/MinimalBlocks.vue b/static/src/components/chat/MinimalBlocks.vue
index 20835e1..1805416 100644
--- a/static/src/components/chat/MinimalBlocks.vue
+++ b/static/src/components/chat/MinimalBlocks.vue
@@ -11,7 +11,21 @@
@click="toggleExpand(group.id)"
>
- {{ getSummaryPreview(group.actions) }}
+
+
+
+ {{ char === ' ' ? '\u00A0' : char }}
+
+
+
+ {{ getSummaryPreview(group.actions) }}
+
+
@@ -141,6 +155,8 @@ const truncateSummaryPreview = (raw: string) => {
return text;
};
+const getAnimatedSummaryChars = (text: string) => Array.from(text || '');
+
// 获取摘要组的加载动画组件(每次action类型切换时随机一次)
const getSummaryLoader = (groupId: string) => {
const group = blockGroups.value.find(g => g.id === groupId);
@@ -527,17 +543,20 @@ watch(() => props.actions, () => {
height: 18px;
}
-/* 运行中的发光效果 */
-.summary-line-text.running .summary-preview {
- animation: textGlow 1.5s ease-in-out infinite !important;
+/* 运行中文本:按字符依次闪烁 */
+.summary-line-text.running .summary-char {
+ display: inline-block;
+ color: var(--claude-text-secondary);
+ animation: summaryPass 2s ease-in-out infinite;
}
-@keyframes textGlow {
- 0%, 100% {
- color: var(--claude-text-secondary) !important;
+@keyframes summaryPass {
+ 0%,
+ 100% {
+ color: var(--claude-text-secondary);
}
50% {
- color: var(--claude-accent) !important;
+ color: var(--claude-accent);
}
}