feat(FN-3538): document pause-safe stuck timing in settings reference

Merged step 4 of the FN-3538 branch, which adds documentation for pause-safe stuck timing to the settings reference.

Fusion-Task-Id: FN-3538
This commit is contained in:
Fusion
2026-05-05 23:23:48 -07:00
committed by gsxdsm
parent 193be58dba
commit 11e5f69241
3 changed files with 39 additions and 8 deletions

View File

@@ -0,0 +1,5 @@
---
"@fusion/dashboard": patch
---
Show provider icons in chat: small icon next to the model name in the sidebar session list, and replace the generic robot icon in the chat thread header and assistant message avatars with the active provider icon.

View File

@@ -124,10 +124,25 @@
.chat-session-meta {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 11px;
color: var(--text-tertiary);
}
.chat-session-meta-model {
display: inline-flex;
align-items: center;
gap: 4px;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.chat-session-meta-model .provider-icon {
flex-shrink: 0;
}
/* === Chat Session Delete Button === */
.chat-session-delete-btn {
position: absolute;

View File

@@ -27,6 +27,7 @@ import type { Agent } from "@fusion/core";
import type { DiscoveredSkill } from "@fusion/dashboard";
import type { ModelInfo } from "../api";
import { CustomModelDropdown } from "./CustomModelDropdown";
import { ProviderIcon } from "./ProviderIcon";
import { AgentMentionPopup } from "./AgentMentionPopup";
import { FileMentionPopup } from "./FileMentionPopup";
import { useFileMention } from "../hooks/useFileMention";
@@ -557,6 +558,7 @@ interface ChatMessageItemProps {
hideAssistantIdentity: boolean;
showAssistantModelTag: boolean;
activeModelTag: string | null;
activeModelProvider: string | null;
activeSessionId: string | null;
mentionAgentsByName: Map<string, Agent>;
}
@@ -571,6 +573,7 @@ const ChatMessageItem = memo(function ChatMessageItem({
hideAssistantIdentity,
showAssistantModelTag,
activeModelTag,
activeModelProvider,
activeSessionId,
mentionAgentsByName,
}: ChatMessageItemProps) {
@@ -672,7 +675,7 @@ const ChatMessageItem = memo(function ChatMessageItem({
>
{isAssistantMessage && !hideAssistantIdentity && (
<div className="chat-message-avatar">
<Bot size={14} />
{activeModelProvider ? <ProviderIcon provider={activeModelProvider} size="sm" /> : <Bot size={14} />}
<span>{agentName}</span>
{showAssistantModelTag && activeModelTag && <span className="chat-model-tag">{activeModelTag}</span>}
</div>
@@ -1471,6 +1474,7 @@ export function ChatView({ projectId, addToast }: ChatViewProps) {
};
const activeModelTag = formatModelTag(activeSession?.modelProvider, activeSession?.modelId);
const activeModelProvider = activeSession?.modelProvider ?? null;
const hasThreadInView = Boolean(activeSession || isStreaming || messages.length > 0);
const threadHeaderTitle = activeSession?.agentId === FN_AGENT_ID
@@ -1583,11 +1587,16 @@ export function ChatView({ projectId, addToast }: ChatViewProps) {
{session.lastMessagePreview || "No messages"}
</div>
<div className="chat-session-meta">
<span>
{agentsMap.get(session.agentId)?.name ||
(session.agentId === FN_AGENT_ID
? (formatModelTag(session.modelProvider, session.modelId) ?? "Fusion")
: session.agentId.slice(0, 30))}
<span className="chat-session-meta-model">
{session.modelProvider && (
<ProviderIcon provider={session.modelProvider} size="sm" />
)}
<span>
{agentsMap.get(session.agentId)?.name ||
(session.agentId === FN_AGENT_ID
? (formatModelTag(session.modelProvider, session.modelId) ?? "Fusion")
: session.agentId.slice(0, 30))}
</span>
</span>
<span>{session.updatedAt ? formatRelativeTime(session.updatedAt) : ""}</span>
</div>
@@ -1683,7 +1692,7 @@ export function ChatView({ projectId, addToast }: ChatViewProps) {
<ChevronLeft size={16} />
</button>
)}
<Bot size={16} />
{activeModelProvider ? <ProviderIcon provider={activeModelProvider} size="md" /> : <Bot size={16} />}
<span className="chat-thread-header-title">{threadHeaderTitle}</span>
{showThreadHeaderModelTag && <span className="chat-model-tag">{activeModelTag}</span>}
{hasThreadInView && (
@@ -1724,6 +1733,7 @@ export function ChatView({ projectId, addToast }: ChatViewProps) {
hideAssistantIdentity={hideAssistantIdentity}
showAssistantModelTag={showAssistantModelTag}
activeModelTag={activeModelTag}
activeModelProvider={activeModelProvider}
activeSessionId={activeSession?.id ?? null}
mentionAgentsByName={mentionAgentsByName}
/>
@@ -1731,7 +1741,7 @@ export function ChatView({ projectId, addToast }: ChatViewProps) {
<div className="chat-message chat-message--assistant chat-message--streaming">
{!hideAssistantIdentity && (
<div className="chat-message-avatar">
<Bot size={14} />
{activeModelProvider ? <ProviderIcon provider={activeModelProvider} size="sm" /> : <Bot size={14} />}
<span>{agentName}</span>
{showAssistantModelTag && <span className="chat-model-tag">{activeModelTag}</span>}
</div>
@@ -1776,6 +1786,7 @@ export function ChatView({ projectId, addToast }: ChatViewProps) {
hideAssistantIdentity={hideAssistantIdentity}
showAssistantModelTag={showAssistantModelTag}
activeModelTag={activeModelTag}
activeModelProvider={activeModelProvider}
activeSessionId={activeSession?.id ?? null}
mentionAgentsByName={mentionAgentsByName}
/>