github →

New request

#3338: ux: messaging session source badge shows in sidebar but not in chat pane topbar after clicking in

We'll provision a sandbox, run an agent against the issue, and open a draft PR. You can pull the branch and iterate from there.

Issue
bugux

Issue: Messaging session source badge shows in sidebar but disappears from topbar after clicking into session

描述

侧边栏会话列表能正确显示 Telegram/WeChat 等平台来源标记,但点击进入该会话后,顶部标题栏(topbar)就不再显示平台标识了。前后信息流断裂。

复现步骤

  1. 在 Hermes WebUI 中,确保有来自 Telegram / WeChat 的会话显示在侧边栏
  2. 观察侧边栏 —— 会话条目右侧显示有平台标识("Telegram" / "WeChat" 等标签)
  3. 点击该会话进入聊天面板
  4. 顶部标题栏只显示会话标题和消息数,缺少平台来源标识

期望行为

进入会话后,顶部标题栏应在标题旁显示平台来源标签(类似侧边栏的展示方式),让用户能持续感知当前会话所处的平台上下文。

根因分析

侧边栏显示平台标识靠两重机制:

  • CSS 伪元素 ::after { content: attr(data-source) }.session-item.cli-session 上渲染(sessions.js:4082-4086
  • 详细密度模式下通过 _getChannelLabel() 写入 meta 行(sessions.js:4231-4232

两者都检查 s.is_cli_session,在侧边栏的合并路径中,deduped_cli 来源的会话条目保留了 is_cli_session: true

但 topbar badge(panels.js:61)的判断条件同样是:

if (S.session.is_cli_session)
  sourceLabel = S.session.source_label || S.session.source_tag || S.session.raw_source || '';

对于 messaging 会话,后端的 is_cli_session_row()source == "messaging" 时返回 Falseagent_sessions.py:151-152),导致合并后的会话数据中 is_cli_sessionfalse,topbar badge 不渲染。

topbar-source-badge 的 CSS class 已存在(style.css:1885),只是判断条件被 is_cli_session 挡住了。

修复方向建议

panels.js:61(以及 ui.js:5295)处判断是否显示 source badge 的逻辑应独立于 is_cli_session,直接检查 source_label / source_tag / raw_source 是否有值即可:

// 改为:
const sourceLabel = (S.session && (
  S.session.source_label ||
  S.session.source_tag ||
  S.session.raw_source
)) || '';

这样无论 is_cli_sessiontrue 还是 false,只要会话确实有平台来源信息,topbar 就显示 badge。

相关代码位置

  • 后端:is_cli_session_row()agent_sessions.py:140-167
  • 合并逻辑:_merge_cli_sidebar_metadata()routes.py:2680-2730
  • 前端侧边栏渲染:sessions.js:4082-4086sessions.js:4231-4232
  • 前端 topbar 渲染:panels.js:61ui.js:5295
  • CSS 样式:style.css:1885.topbar-source-badge)、style.css:3640-3673(侧边栏 badge)
Assessmentadvisory
bug easy95% confidence

Precisely localized conditional bug where topbar source-badge logic incorrectly gates on is_cli_session instead of available source metadata fields.

Likely files
  • static/panels.js
  • static/ui.js
Create the request

This opens a fresh agent run and a draft PR for issue #3338.

Cancel