Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion packages/client/src/components/hermes/chat/ChatPanel.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -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>
Expand Down Expand Up @@ -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;
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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?',
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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?',
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 l’historique',
hermesHistory: 'Historique Hermes',
historyScopeHint: 'Sessions d’historique Hermes en lecture seule, regroupées par source.',
noSessions: 'Aucune session',
newChat: 'Nouvelle discussion',
deleteSession: 'Supprimer cette session ?',
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: 'このセッションを削除しますか?',
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/ko.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: '이 세션을 삭제하시겠습니까?',
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/pt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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?',
Expand Down
5 changes: 5 additions & 0 deletions packages/client/src/i18n/locales/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: '按标题或消息内容搜索',
Expand Down
16 changes: 15 additions & 1 deletion packages/client/src/views/hermes/HistoryView.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -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;
Expand Down
Loading