From d9ef51492d313afdb37c2a9048e4bfaf2937592c Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Fri, 3 Jul 2026 00:44:21 -0700 Subject: [PATCH] FN-7462: show mobile chat conversation titles Mobile direct-chat dropdowns now identify sessions by conversation title instead of model-name text. - Render the mobile session trigger with the conversation title or Untitled while preserving the provider logo. - Remove mobile trigger model-tag styling and assert the model badge stays out of the compact header. - Document the mobile Chat dropdown behavior and add a patch changeset for the published CLI package. Files changed: .changeset/fn-7462-mobile-chat-dropdown-title.md | 7 ++++ docs/dashboard-guide.md | 2 +- packages/dashboard/app/components/ChatView.css | 8 ----- packages/dashboard/app/components/ChatView.tsx | 8 +++-- .../__tests__/ChatView.core-contracts.test.tsx | 25 +++++++++++--- .../components/__tests__/ChatView.mobile.test.tsx | 39 +++++++++++++++++++++- 6 files changed, 72 insertions(+), 17 deletions(-) Fusion-Task-Id: FN-7462 Fusion-Task-Lineage: 6a6e2ac3-ecca-4076-81c5-b4e4a65eb286 Co-authored-by: Fusion (runfusion.ai) --- .../fn-7462-mobile-chat-dropdown-title.md | 7 ++++ docs/dashboard-guide.md | 2 +- .../dashboard/app/components/ChatView.css | 8 ---- .../dashboard/app/components/ChatView.tsx | 8 +++- .../ChatView.core-contracts.test.tsx | 25 +++++++++--- .../__tests__/ChatView.mobile.test.tsx | 39 ++++++++++++++++++- 6 files changed, 72 insertions(+), 17 deletions(-) create mode 100644 .changeset/fn-7462-mobile-chat-dropdown-title.md diff --git a/.changeset/fn-7462-mobile-chat-dropdown-title.md b/.changeset/fn-7462-mobile-chat-dropdown-title.md new file mode 100644 index 0000000000..431b6206a3 --- /dev/null +++ b/.changeset/fn-7462-mobile-chat-dropdown-title.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Show conversation titles in the mobile Chat dropdown. +category: fix +dev: Keeps the provider logo while removing model-name text from the mobile direct-chat trigger. diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md index 2b95d774dc..f02bce9fca 100644 --- a/docs/dashboard-guide.md +++ b/docs/dashboard-guide.md @@ -412,7 +412,7 @@ Chat view provides project-scoped conversations with agents. - If you queue follow-up user messages while the assistant is still streaming, Chat persists them per session, stacks each queued preview above the input box with one shared divider, and restores/sends them one at a time in FIFO order once each active response finishes if you leave and return. - Chat message lists now track near-bottom scroll state: while you are reading older messages, live streaming/new replies do not force-scroll; a **Latest** jump control appears until you return to the tail. - On mobile direct-chat threads, entering a thread and restoring Chat after tab/page visibility returns re-anchors to the newest message (`scrollTop = scrollHeight`) so the view always opens at the live tail. -- On mobile direct-chat threads, the top Chat header collapses into one compact row: the back button is the far-left visible control and the active conversation dropdown stays beside it, while the visible Chat icon/title shell is hidden to preserve transcript space. Tapping the active conversation opens a lightweight dropdown so you can switch to another direct session or start a New Chat without backing out to the sidebar list first; long conversation titles stay readable in the dropdown via wrapped option text and taller touch-friendly rows. +- On mobile direct-chat threads, the top Chat header collapses into one compact row: the back button is the far-left visible control and the active conversation dropdown stays beside it, while the visible Chat icon/title shell is hidden to preserve transcript space. The dropdown trigger shows the conversation title with the provider/model logo only (no model-name text), and tapping it opens a lightweight dropdown so you can switch to another direct session or start a New Chat without backing out to the sidebar list first; long conversation titles stay readable in the dropdown via wrapped option text and taller touch-friendly rows. - On mobile direct-chat threads, the single thread-wide Markdown/plain eye toggle floats above the transcript/composer area instead of occupying a second header row; desktop/tablet keeps the toggle in the thread header. - Direct chat sessions can be renamed from the sidebar row edit button, the desktop conversation context menu, and the mobile session switcher; blank rename submissions clear the custom title so the default session label is shown again. diff --git a/packages/dashboard/app/components/ChatView.css b/packages/dashboard/app/components/ChatView.css index 9217463b54..f41cf37961 100644 --- a/packages/dashboard/app/components/ChatView.css +++ b/packages/dashboard/app/components/ChatView.css @@ -615,14 +615,6 @@ The Direct-chat context budget indicator is a secondary desktop/tablet header af white-space: nowrap; } -.chat-mobile-session-trigger .chat-model-tag { - flex-shrink: 0; - max-width: calc(var(--space-xl) * 4); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - .chat-mobile-session-trigger .provider-icon, .chat-mobile-session-trigger > svg:first-child { flex-shrink: 0; diff --git a/packages/dashboard/app/components/ChatView.tsx b/packages/dashboard/app/components/ChatView.tsx index 8ba0e85de9..e6af84f660 100644 --- a/packages/dashboard/app/components/ChatView.tsx +++ b/packages/dashboard/app/components/ChatView.tsx @@ -2139,6 +2139,7 @@ export function ChatView({ projectId, addToast, floating = false, compactLayout const threadHeaderTitle = activeSession?.agentId === FN_AGENT_ID ? (activeModelTag ?? "Fusion") : activeSession?.title || agentsMap.get(activeSession?.agentId ?? "")?.name || activeSession?.agentId || "Chat"; + const mobileDirectSessionTitle = activeSession?.title || t("chat.untitledSession", "Untitled"); const showThreadHeaderModelTag = Boolean(activeModelTag && activeModelTag !== threadHeaderTitle); const showThreadHeaderContextWindow = !isChatMobile && hasThreadInView && activeContextWindow !== null; @@ -2590,8 +2591,11 @@ export function ChatView({ projectId, addToast, floating = false, compactLayout onClick={() => setMobileSessionMenuOpen((open) => !open)} > {activeModelProvider ? : } - {threadHeaderTitle} - {showThreadHeaderModelTag && {activeModelTag}} + {/* + FNXC:ChatHeader 2026-07-03-00:00: + Mobile direct-chat needs one compact, conversation-oriented dropdown trigger. Show the active conversation title (or Untitled) beside only the provider/model logo and chevron; keep model-name badges exclusive to the desktop/thread identity row. + */} + {mobileDirectSessionTitle}