feat: add History page for browsing Hermes sessions (v0.5.5) (#370)

Features:
- Add dedicated History page for browsing Hermes session history
- Independent session state (does not interfere with active chat)
- Auto-select first CLI session on page load
- Filter out api_server and cron sources

Components:
- New HistoryView.vue with isolated state management
- New HistoryMessageList.vue with session prop support
- Filters empty content and tool messages without toolName

Backend:
- Add GET /api/hermes/sessions/hermes endpoint (excludes api_server)
- Add GET /api/hermes/sessions/hermes/:id endpoint (404s for api_server)
- Add fetchHermesSessions() and fetchHermesSession() API functions

Cleanup:
- Remove localStorage session caching
- Simplify profile switching cache management
- Clean up废弃 cache cleanup calls

i18n:
- Add "History" translation to all 8 locales
- Add v0.5.5 changelog entries in all languages
- 🎉 Happy Labor Day!

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-05-01 11:27:43 +08:00
committed by GitHub
parent e2f35d3caf
commit 3ba76ad19b
19 changed files with 1473 additions and 47 deletions
+11 -1
View File
@@ -67,6 +67,8 @@ export default {
// Sidebar
sidebar: {
chat: 'Chat',
search: 'Suche',
history: 'Verlauf',
jobs: 'Geplante Aufgaben',
models: 'Modelle',
profiles: 'Profile',
@@ -563,7 +565,15 @@ jobTriggered: 'Job ausgelost',
// Anderungsprotokoll
changelog: {
new_0_5_4_1: 'Happy Labor Day! No work this Labor Day, please bear with us if there are any issues 🎉',
new_0_5_5_1: '🎉 Tag der Arbeit! Heute wird nicht gearbeitet, bitte habt Verständnis',
new_0_5_5_2: 'Verlaufsseite für Hermes-Sitzungshistorie hinzugefügt',
new_0_5_5_3: 'Verlaufsseite verwaltet Sitzungen unabhängig ohne Störung des aktiven Chats',
new_0_5_5_4: 'Verlaufsseite lädt automatisch erste CLI-Sitzung',
new_0_5_5_5: 'HistoryMessageList-Komponente mit Session-Prop-Injection',
new_0_5_5_6: 'Leere Nachrichten und Tool-Nachrichten ohne toolName gefiltert',
new_0_5_5_7: 'LocalStorage-Sitzungscache entfernt, Daten direkt vom Backend',
new_0_5_5_8: 'Profile-Umschaltung optimiert, veraltete Cache-Aufrufe entfernt',
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
+15 -7
View File
@@ -70,6 +70,7 @@ export default {
sidebar: {
chat: 'Chat',
search: 'Search',
history: 'History',
jobs: 'Jobs',
models: 'Models',
profiles: 'Profiles',
@@ -734,13 +735,20 @@ export default {
// Changelog
changelog: {
new_0_5_4_1: 'Happy Labor Day! No work this Labor Day, please bear with us if there are any issues 🎉',
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
new_0_5_4_5: 'Add workspace dialog i18n translations for title and improve session persistence',
new_0_5_4_6: 'Support code block copy feedback with user notifications',
new_0_5_4_7: 'Align usage analytics with Hermes state DB schema',
new_0_5_5_1: '🎉 Happy Labor Day! No work this Labor Day, please bear with us if there are any issues',
new_0_5_5_2: 'Add History page for browsing Hermes session history',
new_0_5_5_3: 'History page manages session state independently without interfering with active chat',
new_0_5_5_4: 'History page auto-loads and selects first CLI session by default',
new_0_5_5_5: 'Add HistoryMessageList component with session prop injection support',
new_0_5_5_6: 'Filter empty content messages and tool messages without toolName for better display',
new_0_5_5_7: 'Remove localStorage session cache, all session data now fetched directly from backend',
new_0_5_5_8: 'Optimize profile switching logic by removing废弃 cache cleanup calls',
new_0_5_4_1: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_2: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_3: 'Fix web terminal Hermes CLI availability after Docker deployment',
new_0_5_4_4: 'Add workspace dialog i18n translations for title and improve session persistence',
new_0_5_4_5: 'Support code block copy feedback with user notifications',
new_0_5_4_6: 'Align usage analytics with Hermes state DB schema',
new_0_5_3_1: 'Improve reasoning process display with persistence across page refreshes',
new_0_5_3_2: 'Optimize stringified array format parsing to extract thinking/text/tool_calls',
new_0_5_3_3: 'Improve log display by removing ellipsis and showing full content',
+11 -1
View File
@@ -67,6 +67,8 @@ export default {
// Sidebar
sidebar: {
chat: 'Chat',
search: 'Buscar',
history: 'Historial',
jobs: 'Tareas programadas',
models: 'Modelos',
profiles: 'Perfiles',
@@ -563,7 +565,15 @@ jobTriggered: 'Job ejecutado',
// Registro de cambios
changelog: {
new_0_5_4_1: 'Happy Labor Day! No work this Labor Day, please bear with us if there are any issues 🎉',
new_0_5_5_1: '🎉 ¡Feliz Día del Trabajo! Hoy no se trabaja, agradezcan su comprensión',
new_0_5_5_2: 'Añadida página de historial para sesiones Hermes',
new_0_5_5_3: 'La página de historial gestiona sesiones de forma independiente',
new_0_5_5_4: 'Carga automática de primera sesión CLI',
new_0_5_5_5: 'Componente HistoryMessageList con inyección de props',
new_0_5_5_6: 'Filtrado de mensajes vacíos y tools sin toolName',
new_0_5_5_7: 'Eliminado caché de sesiones localStorage, datos del backend',
new_0_5_5_8: 'Optimizado cambio de perfil, eliminadas llamadas de cachete obsoletas',
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
+11 -1
View File
@@ -67,6 +67,8 @@ export default {
// Sidebar
sidebar: {
chat: 'Discussion',
search: 'Rechercher',
history: 'Historique',
jobs: 'Taches planifiees',
models: 'Modeles',
profiles: 'Profils',
@@ -563,7 +565,15 @@ jobTriggered: 'Job declenche',
// Journal des modifications
changelog: {
new_0_5_4_1: 'Happy Labor Day! No work this Labor Day, please bear with us if there are any issues 🎉',
new_0_5_5_1: '🎉 Joyeuse Fête du Travail! Pas de travail aujourd\'hui, merci de votre compréhension',
new_0_5_5_2: 'Ajout d\'une page d\'historique pour les sessions Hermes',
new_0_5_5_3: 'La page d\'historique gère les sessions de manière indépendante',
new_0_5_5_4: 'Chargement automatique de la première session CLI',
new_0_5_5_5: 'Composant HistoryMessageList avec injection de props',
new_0_5_5_6: 'Filtrage des messages vides et des tools sans toolName',
new_0_5_5_7: 'Suppression du cache localStorage des sessions',
new_0_5_5_8: 'Optimisation du changement de profil',
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
+11 -1
View File
@@ -67,6 +67,8 @@ export default {
// サイドバー
sidebar: {
chat: 'チャット',
search: '検索',
history: '履歴',
jobs: 'ジョブ',
models: 'モデル',
profiles: 'プロファイル',
@@ -563,7 +565,15 @@ export default {
// 更新履歴
changelog: {
new_0_5_4_1: 'Happy Labor Day! No work this Labor Day, please bear with us if there are any issues 🎉',
new_0_5_5_1: '🎉 労働者の日!今日はお休みです、何卒ご理解ください',
new_0_5_5_2: 'Hermesセッション履歴ページを追加',
new_0_5_5_3: '履歴ページはアクティブチャットに干渉せずにセッション管理',
new_0_5_5_4: '履歴ページは最初のCLIセッションを自動選択',
new_0_5_5_5: 'HistoryMessageListコンポーネントを追加',
new_0_5_5_6: '空のメッセージとtoolNameなしのtoolメッセージをフィルタリング',
new_0_5_5_7: 'localStorageセッションキャッシュを削除、バックエンドから直接取得',
new_0_5_5_8: 'プロフィール切り替えを最適化',
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
+11 -1
View File
@@ -67,6 +67,8 @@ export default {
// 사이드바
sidebar: {
chat: '채팅',
search: '검색',
history: '기록',
jobs: '예약 작업',
models: '모델',
profiles: '프로필',
@@ -563,7 +565,15 @@ export default {
// 변경 이력
changelog: {
new_0_5_4_1: 'Happy Labor Day! No work this Labor Day, please bear with us if there are any issues 🎉',
new_0_5_5_1: '🎉 노동절 감사합니다! 오늘은 쉬니까 양해 부탁드립니다',
new_0_5_5_2: 'Hermes 세션 기록 페이지 추가',
new_0_5_5_3: '기록 페이지는 독립적으로 세션 관리',
new_0_5_5_4: '기록 페이지는 첫 번째 CLI 세션 자동 선택',
new_0_5_5_5: 'HistoryMessageList 컴포넌트 추가',
new_0_5_5_6: '빈 메시지와 toolName 없는 tool 메시지 필터링',
new_0_5_5_7: 'localStorage 세션 캐시 제거, 백엔드에서 직접 가져오기',
new_0_5_5_8: '프로필 전환 최적화',
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
+11 -1
View File
@@ -67,6 +67,8 @@ export default {
// Sidebar
sidebar: {
chat: 'Chat',
search: 'Pesquisar',
history: 'Historico',
jobs: 'Tarefas agendadas',
models: 'Modelos',
profiles: 'Perfis',
@@ -563,7 +565,15 @@ jobTriggered: 'Job acionado',
// Registro de alteracoes
changelog: {
new_0_5_4_1: 'Happy Labor Day! No work this Labor Day, please bear with us if there are any issues 🎉',
new_0_5_5_1: '🎉 Feliz Dia do Trabalhador! Hoje não se trabalha, obrigado pela compreensão',
new_0_5_5_2: 'Adicionada página de histórico para sessões Hermes',
new_0_5_5_3: 'Página de histórico gerencia sessões de forma independente',
new_0_5_5_4: 'Carregamento automático da primeira sessão CLI',
new_0_5_5_5: 'Componente HistoryMessageList com injeção de props',
new_0_5_5_6: 'Filtragem de mensagens vazias e tools sem toolName',
new_0_5_5_7: 'Removido cache de sessões localStorage, dados do backend',
new_0_5_5_8: 'Otimizada troca de perfil',
new_0_5_4_2: 'Fix concurrent chat sessions event cross-talk with WebSocket event routing refactoring',
new_0_5_4_3: 'Fix cron job edit payloads with partial PATCH to support long prompt name-only edits',
new_0_5_4_4: 'Fix web terminal Hermes CLI availability after Docker deployment',
+15 -7
View File
@@ -70,6 +70,7 @@ export default {
sidebar: {
chat: '对话',
search: '搜索',
history: '历史',
jobs: '任务',
models: '模型',
profiles: '用户',
@@ -736,13 +737,20 @@ export default {
// 更新日志
changelog: {
new_0_5_4_1: '五一劳动节快乐!这个劳动节就不劳动啦,如果有问题大家忍忍 🎉',
new_0_5_4_2: '修复并发聊天会话事件串扰问题,重构 WebSocket 事件路由机制',
new_0_5_4_3: '修复 cron job 编辑 payload,支持长提示词的仅名称编辑',
new_0_5_4_4: '修复 Docker 部署后 Web 终端无法使用 Hermes CLI 的问题',
new_0_5_4_5: '添加工作区对话框标题 i18n 翻译,改进会话持久化',
new_0_5_4_6: '支持代码块复制反馈,显示用户通知',
new_0_5_4_7: '对齐使用分析与 Hermes 状态数据库架构',
new_0_5_5_1: '🎉 五一劳动节快乐!这个劳动节就不劳动啦,如果有问题大家忍忍',
new_0_5_5_2: '新增历史页面,用于浏览 Hermes 会话历史记录',
new_0_5_5_3: '历史页面独立管理会话状态,不影响当前聊天页面的活动会话',
new_0_5_5_4: '历史页面默认自动加载并选中第一个 CLI 类型的会话',
new_0_5_5_5: '新增 HistoryMessageList 组件,支持通过 props 注入会话数据',
new_0_5_5_6: '过滤空内容消息和无 toolName 的 tool 消息,提升历史记录显示质量',
new_0_5_5_7: '移除 localStorage 会话缓存,所有会话数据改为直接从后端获取',
new_0_5_5_8: '优化 profile 切换逻辑,移除废弃的缓存清理调用',
new_0_5_4_1: '修复并发聊天会话事件串扰问题,重构 WebSocket 事件路由机制',
new_0_5_4_2: '修复 cron job 编辑 payload,支持长提示词的仅名称编辑',
new_0_5_4_3: '修复 Docker 部署后 Web 终端无法使用 Hermes CLI 的问题',
new_0_5_4_4: '添加工作区对话框标题 i18n 翻译,改进会话持久化',
new_0_5_4_5: '支持代码块复制反馈,显示用户通知',
new_0_5_4_6: '对齐使用分析与 Hermes 状态数据库架构',
new_0_5_3_1: '改进思考过程显示,支持页面刷新后持久化',
new_0_5_3_2: '优化字符串化数组格式解析,自动提取思考/文本/工具调用',
new_0_5_3_3: '改进日志显示,移除省略号完整展示日志内容',