Просмотр исходного кода

移除聊天页头同步状态

Samien 1 месяц назад
Родитель
Сommit
c2f75e1

+ 1 - 10
src/client/components/workspace/WorkspaceMessageTimeline.vue

@@ -39,8 +39,6 @@ const props = withDefaults(defineProps<{
   loading?: boolean
   loadingOlder?: boolean
   hasOlder?: boolean
-  connected?: boolean
-  synced?: boolean
   showTools?: boolean
   showAssistantIdentity?: boolean
   interaction?: UiInteraction | null
@@ -69,8 +67,6 @@ const props = withDefaults(defineProps<{
   loading: false,
   loadingOlder: false,
   hasOlder: false,
-  connected: false,
-  synced: false,
   showTools: true,
   showAssistantIdentity: true,
   interaction: null,
@@ -318,10 +314,6 @@ defineExpose({ scrollToMessage, scrollToAnchor, scrollToBottom, isFollowingBotto
         <AgentAvatar v-else-if="headerAvatarName" class="timeline-header__avatar" :name="headerAvatarName" :avatar="headerAvatar" :state="headerAvatarState" :activity-key="headerAvatarActivityKey" :size="34" />
         <div class="timeline-heading"><h2>{{ title }}</h2><p v-if="subtitle">{{ subtitle }}</p></div>
       </div>
-      <div v-if="!transparentHeader" class="timeline-state" :title="connected ? (synced ? '实时连接与历史均已同步' : '实时连接已就绪,历史同步中') : '实时连接未就绪'">
-        <span class="status-dot" :class="connected ? (synced ? 'status-dot--online' : 'status-dot--working') : ''" />
-        {{ connected ? (synced ? '已同步' : '同步中') : '离线' }}
-      </div>
       <slot name="header-actions" />
     </header>
 
@@ -517,7 +509,6 @@ defineExpose({ scrollToMessage, scrollToAnchor, scrollToBottom, isFollowingBotto
 .timeline-header--transparent { position: absolute; top: 0; right: 0; left: 0; min-height: 0; justify-content: flex-end; padding: 11px 14px; border: 0; background: transparent; backdrop-filter: none; pointer-events: none; }
 .timeline-header--transparent > * { pointer-events: auto; }
 .timeline-identity { display: flex; min-width: 0; flex: 1; align-items: center; gap: 10px; }.timeline-heading { min-width: 0; }.timeline-header h2 { overflow: hidden; margin: 0; font-size: 14px; font-weight: 630; letter-spacing: -.02em; text-overflow: ellipsis; white-space: nowrap; }.timeline-header p { overflow: hidden; margin: 3px 0 0; color: var(--text-muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
-.timeline-state { display: flex; align-items: center; gap: 6px; color: var(--text-muted); font-size: 9px; }
 .timeline { min-height: 0; flex: 1; overflow-y: auto; overflow-anchor: none; overscroll-behavior: contain; background: var(--conversation-canvas); }
 .message-stack { width: min(780px, 100%); min-height: 100%; margin: 0 auto; padding: 24px 24px 36px; }
 .message-stack--interaction { padding-bottom: 10px; }
@@ -562,7 +553,7 @@ defineExpose({ scrollToMessage, scrollToAnchor, scrollToBottom, isFollowingBotto
 @keyframes shimmer { to { background-position: -200% 0; } }
 
 @media (max-width: 768px) {
-  .timeline-header { min-height: 54px; padding: 8px 12px; }.timeline-state { font-size: 0; }.timeline-state .status-dot { width: 7px; height: 7px; }
+  .timeline-header { min-height: 54px; padding: 8px 12px; }
   .new-chat-empty { gap: 15px; padding-block: 9vh; }.new-chat-empty__logo { width: min(150px, 42vw); }.new-chat-empty p { font-size: 16px; }
   .message-stack { padding: 18px 14px 30px; }.message-stack--interaction { padding-bottom: 8px; }.message { margin-bottom: 18px; }.message__body { max-width: calc(100% - 37px); }.message--user .message__body { max-width: 88%; }
   .message--system .message__body { max-width: 100%; }

+ 1 - 1
src/client/views/ConversationsView.vue

@@ -972,7 +972,7 @@ onBeforeUnmount(() => {
         :subtitle="active?.kind === 'group' ? `${members.length} 位成员` : ''"
         :header-avatar-name="activeHeaderAvatarName" :header-avatar="activeHeaderAvatar" :header-avatar-kind="active?.kind === 'group' ? 'team' : 'agent'"
         :header-avatar-members="activeHeaderAvatarMembers" :header-avatar-state="activeHeaderAgent ? workspaceAvatarState(active, activeHeaderAgent.id) : 'idle'" :header-avatar-activity-key="active?.lastSeq"
-        :loading="loading" :has-older="older && !!active" :connected="!error" :synced="!loading"
+        :loading="loading" :has-older="older && !!active"
         :show-tools="showThinking" :allow-branch="false" :thinking="thinking"
         :agent-avatars="Object.fromEntries(agents.map(a => [a.id, a.avatar]))"
         :agent-states="Object.fromEntries(members.map(a => [a.id, workspaceAvatarState(active, a.id)]))"

+ 2 - 0
tests/client/typingIndicator.test.ts

@@ -129,6 +129,8 @@ describe('message timeline typing state', () => {
     })
 
     expect(wrapper.get('.timeline-header h2').text()).toBe('Apple Dev')
+    expect(wrapper.find('.timeline-state').exists()).toBe(false)
+    expect(wrapper.text()).not.toContain('已同步')
     expect(wrapper.get('.timeline-header .agent-avatar-stub').attributes()).toMatchObject({
       'data-name': 'Apple Dev',
       'data-avatar': 'avatar-initial',