fix(chat): clarify session history scope (#393)

This commit is contained in:
Zhicheng Han
2026-05-02 03:00:47 +02:00
committed by GitHub
parent 969c7c0e1a
commit 4c8cff2e7c
10 changed files with 85 additions and 2 deletions
@@ -271,7 +271,7 @@ async function handleWorkspaceConfirm() {
<div v-if="currentMode === 'chat'" class="session-backdrop" :class="{ active: showSessions }" @click="showSessions = false" />
<aside v-if="currentMode === 'chat'" class="session-list" :class="{ collapsed: !showSessions }">
<div class="session-list-header">
<span v-if="showSessions" class="session-list-title">{{ t('chat.sessions') }}</span>
<span v-if="showSessions" class="session-list-title">{{ t('chat.webUiSessions') }}</span>
<div class="session-list-actions">
<button class="session-close-btn" @click="showSessions = false">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
@@ -283,6 +283,12 @@ async function handleWorkspaceConfirm() {
</NButton>
</div>
</div>
<div v-if="showSessions" class="session-scope-note">
<span>{{ t('chat.sessionScopeHint') }}</span>
<RouterLink class="session-scope-link" :to="{ name: 'hermes.history' }">
{{ t('chat.openHistory') }}
</RouterLink>
</div>
<div v-if="showSessions" class="session-items">
<div v-if="chatStore.isLoadingSessions && chatStore.sessions.length === 0" class="session-loading">{{ t('common.loading') }}</div>
<div v-else-if="chatStore.sessions.length === 0" class="session-empty">{{ t('chat.noSessions') }}</div>
@@ -512,6 +518,29 @@ async function handleWorkspaceConfirm() {
letter-spacing: 0.5px;
}
.session-scope-note {
margin: 0 12px 10px;
padding: 8px 10px;
border: 1px solid rgba($accent-primary, 0.16);
border-radius: $radius-sm;
background: rgba($accent-primary, 0.06);
color: $text-secondary;
font-size: 11px;
line-height: 1.45;
}
.session-scope-link {
display: inline-block;
margin-left: 4px;
color: $accent-primary;
font-weight: 500;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
.session-group-header {
display: flex;
align-items: center;
+5
View File
@@ -105,6 +105,11 @@ export default {
send: 'Senden',
contextUsed: 'Kontext verwendet:',
sessions: 'Sitzungen',
webUiSessions: 'Web-UI/API-Server-Sitzungen',
sessionScopeHint: 'Chat zeigt nur Web-UI/API-Server-Sitzungen. CLI-, Telegram-, Discord-, Cron- und andere Kanal-Sitzungen sind schreibgeschützt im Verlauf.',
openHistory: 'Verlauf öffnen',
hermesHistory: 'Hermes-Verlauf',
historyScopeHint: 'Schreibgeschützte Hermes-Verlaufssitzungen, nach Quelle gruppiert.',
noSessions: 'Keine Sitzungen',
newChat: 'Neuer Chat',
deleteSession: 'Diese Sitzung loschen?',
+5
View File
@@ -117,6 +117,11 @@ export default {
send: 'Send',
contextUsed: 'Context used:',
sessions: 'Sessions',
webUiSessions: 'Web UI/API Server Sessions',
sessionScopeHint: 'Chat shows Web UI/API Server sessions only. CLI, Telegram, Discord, Cron, and other channel sessions are read-only in History.',
openHistory: 'Open History',
hermesHistory: 'Hermes History',
historyScopeHint: 'Read-only Hermes history sessions grouped by source.',
noSessions: 'No sessions',
searchTitle: 'Search Sessions',
searchSubtitle: 'Search by title or message content',
+5
View File
@@ -105,6 +105,11 @@ export default {
send: 'Enviar',
contextUsed: 'Contexto utilizado:',
sessions: 'Sesiones',
webUiSessions: 'Sesiones de Web UI/API Server',
sessionScopeHint: 'Chat solo muestra sesiones de Web UI/API Server. Las sesiones de CLI, Telegram, Discord, Cron y otros canales son de solo lectura en Historial.',
openHistory: 'Abrir historial',
hermesHistory: 'Historial de Hermes',
historyScopeHint: 'Sesiones del historial de Hermes, de solo lectura y agrupadas por origen.',
noSessions: 'Sin sesiones',
newChat: 'Nuevo chat',
deleteSession: 'Eliminar esta sesion?',
+5
View File
@@ -105,6 +105,11 @@ export default {
send: 'Envoyer',
contextUsed: 'Contexte utilise :',
sessions: 'Sessions',
webUiSessions: 'Sessions Web UI/API Server',
sessionScopeHint: 'Le chat affiche uniquement les sessions Web UI/API Server. Les sessions CLI, Telegram, Discord, Cron et autres canaux sont en lecture seule dans Historique.',
openHistory: 'Ouvrir lhistorique',
hermesHistory: 'Historique Hermes',
historyScopeHint: 'Sessions dhistorique Hermes en lecture seule, regroupées par source.',
noSessions: 'Aucune session',
newChat: 'Nouvelle discussion',
deleteSession: 'Supprimer cette session ?',
+5
View File
@@ -105,6 +105,11 @@ export default {
send: '送信',
contextUsed: 'コンテキスト使用量:',
sessions: 'セッション',
webUiSessions: 'Web UI/API Server セッション',
sessionScopeHint: 'チャットには Web UI/API Server セッションのみ表示されます。CLI、Telegram、Discord、Cron などのチャンネルセッションは履歴で読み取り専用として表示されます。',
openHistory: '履歴を開く',
hermesHistory: 'Hermes 履歴',
historyScopeHint: 'ソース別にグループ化された Hermes 履歴セッションを読み取り専用で表示します。',
noSessions: 'セッションがありません',
newChat: '新しいチャット',
deleteSession: 'このセッションを削除しますか?',
+5
View File
@@ -105,6 +105,11 @@ export default {
send: '전송',
contextUsed: '사용된 컨텍스트:',
sessions: '세션',
webUiSessions: 'Web UI/API Server 세션',
sessionScopeHint: '채팅에는 Web UI/API Server 세션만 표시됩니다. CLI, Telegram, Discord, Cron 등 채널 세션은 기록에서 읽기 전용으로 볼 수 있습니다.',
openHistory: '기록 열기',
hermesHistory: 'Hermes 기록',
historyScopeHint: '소스별로 그룹화된 Hermes 기록 세션을 읽기 전용으로 봅니다.',
noSessions: '세션 없음',
newChat: '새 채팅',
deleteSession: '이 세션을 삭제하시겠습니까?',
+5
View File
@@ -105,6 +105,11 @@ export default {
send: 'Enviar',
contextUsed: 'Contexto utilizado:',
sessions: 'Sessoes',
webUiSessions: 'Sessões da Web UI/API Server',
sessionScopeHint: 'O chat mostra apenas sessões da Web UI/API Server. Sessões de CLI, Telegram, Discord, Cron e outros canais são somente leitura no Histórico.',
openHistory: 'Abrir histórico',
hermesHistory: 'Histórico Hermes',
historyScopeHint: 'Sessões do histórico Hermes somente leitura, agrupadas por origem.',
noSessions: 'Sem sessoes',
newChat: 'Novo chat',
deleteSession: 'Excluir esta sessao?',
+5
View File
@@ -117,6 +117,11 @@ export default {
send: '发送',
contextUsed: '上下文已用:',
sessions: '会话',
webUiSessions: 'Web UI/API Server 会话',
sessionScopeHint: '这里只显示 Web UI/API Server 会话;CLI、Telegram、Discord、Cron 等通道会话在历史中只读查看。',
openHistory: '打开历史',
hermesHistory: 'Hermes 历史',
historyScopeHint: '这里按来源只读查看 Hermes 历史会话。',
noSessions: '暂无会话',
searchTitle: '搜索会话',
searchSubtitle: '按标题或消息内容搜索',
@@ -361,13 +361,16 @@ async function handleWorkspaceConfirm() {
<div class="session-backdrop" :class="{ active: showSessions }" @click="showSessions = false" />
<aside class="session-list" :class="{ collapsed: !showSessions }">
<div class="session-list-header">
<span v-if="showSessions" class="session-list-title">{{ t('chat.sessions') }}</span>
<span v-if="showSessions" class="session-list-title">{{ t('chat.hermesHistory') }}</span>
<div class="session-list-actions">
<button class="session-close-btn" @click="showSessions = false">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
</button>
</div>
</div>
<div v-if="showSessions" class="session-scope-note">
{{ t('chat.historyScopeHint') }}
</div>
<div v-if="showSessions" class="session-items">
<div v-if="hermesSessionsLoading && hermesSessions.length === 0" class="session-loading">{{ t('common.loading') }}</div>
<div v-else-if="hermesSessions.length === 0" class="session-empty">{{ t('chat.noSessions') }}</div>
@@ -582,6 +585,17 @@ async function handleWorkspaceConfirm() {
letter-spacing: 0.5px;
}
.session-scope-note {
margin: 0 12px 10px;
padding: 8px 10px;
border: 1px solid rgba($accent-primary, 0.16);
border-radius: $radius-sm;
background: rgba($accent-primary, 0.06);
color: $text-secondary;
font-size: 11px;
line-height: 1.45;
}
.session-group-header {
display: flex;
align-items: center;