docs: v0.29 release notes for CLI session bridge, version bump
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
29
CHANGELOG.md
29
CHANGELOG.md
@@ -5,6 +5,33 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [v0.29] CLI Session Bridge (Community: @thadreber-web)
|
||||||
|
*April 3, 2026 | 426 tests*
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- **CLI session bridge.** The WebUI now reads sessions from the hermes-agent's
|
||||||
|
SQLite store (`state.db`). CLI sessions appear in the sidebar with a gold
|
||||||
|
"cli" indicator badge. Click to import into the WebUI store with full message
|
||||||
|
history — replies then work through the normal agent pipeline.
|
||||||
|
- **`/api/session/import_cli` endpoint.** Imports a CLI session into the WebUI
|
||||||
|
JSON store. Idempotent — returns existing session if already imported.
|
||||||
|
Derives title from first message, inherits active profile and workspace.
|
||||||
|
- **`/api/sessions` merges CLI sessions.** Sidebar shows both WebUI and CLI
|
||||||
|
sessions sorted by last activity. Deduplication ensures WebUI sessions take
|
||||||
|
priority when the same session_id exists in both stores.
|
||||||
|
- **CLI session fallback on `/api/session`.** If a session_id isn't found in
|
||||||
|
the WebUI store, falls back to reading from the CLI SQLite store.
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
- `api/models.py`: `get_cli_sessions()`, `get_cli_session_messages()`,
|
||||||
|
`import_cli_session()`. All use parameterized SQL queries and `with` for
|
||||||
|
connection management. Graceful fallback on missing sqlite3 or state.db.
|
||||||
|
- `api/routes.py`: CLI fallback in GET `/api/session`, merged list in
|
||||||
|
GET `/api/sessions`, POST `/api/session/import_cli`.
|
||||||
|
- `static/style.css`: `.cli-session` indicator styles (gold border + badge).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [v0.28.1] CI Pipeline + Multi-Arch Docker Builds
|
## [v0.28.1] CI Pipeline + Multi-Arch Docker Builds
|
||||||
*April 3, 2026 | 426 tests*
|
*April 3, 2026 | 426 tests*
|
||||||
|
|
||||||
@@ -917,4 +944,4 @@ Three-panel layout: sessions sidebar, chat area, workspace panel.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*Last updated: v0.28.1, April 3, 2026 | Tests: 426*
|
*Last updated: v0.29, April 3, 2026 | Tests: 426*
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Hermes Web UI -- Forward Sprint Plan
|
# Hermes Web UI -- Forward Sprint Plan
|
||||||
|
|
||||||
> Current state: v0.28.1 | 426 tests | Daily driver ready
|
> Current state: v0.29 | 426 tests | Daily driver ready
|
||||||
> This document plans the path from here to two targets:
|
> This document plans the path from here to two targets:
|
||||||
>
|
>
|
||||||
> Target A: 1:1 feature parity with the Hermes CLI (everything you can do from the
|
> Target A: 1:1 feature parity with the Hermes CLI (everything you can do from the
|
||||||
@@ -663,5 +663,5 @@ and switchToProfile() didn't refresh workspaces or sessions.
|
|||||||
---
|
---
|
||||||
|
|
||||||
*Last updated: April 3, 2026*
|
*Last updated: April 3, 2026*
|
||||||
*Current version: v0.28.1 | 426 tests*
|
*Current version: v0.29 | 426 tests*
|
||||||
*Next sprint: Sprint 24 (Desktop Application)*
|
*Next sprint: Sprint 24 (Desktop Application)*
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="layout">
|
<div class="layout">
|
||||||
<aside class="sidebar">
|
<aside class="sidebar">
|
||||||
<div class="sidebar-header"><div class="logo">H</div><div><h1 style="margin:0;font-size:15px;font-weight:700;letter-spacing:-.01em">Hermes</h1><div style="font-size:10px;color:var(--muted);opacity:.8;margin-top:1px">v0.27</div></div></div>
|
<div class="sidebar-header"><div class="logo">H</div><div><h1 style="margin:0;font-size:15px;font-weight:700;letter-spacing:-.01em">Hermes</h1><div style="font-size:10px;color:var(--muted);opacity:.8;margin-top:1px">v0.29</div></div></div>
|
||||||
<div class="sidebar-nav">
|
<div class="sidebar-nav">
|
||||||
<button class="nav-tab active" data-panel="chat" data-label="Chat" onclick="switchPanel('chat')" title="Chat">💬</button>
|
<button class="nav-tab active" data-panel="chat" data-label="Chat" onclick="switchPanel('chat')" title="Chat">💬</button>
|
||||||
<button class="nav-tab" data-panel="tasks" data-label="Tasks" onclick="switchPanel('tasks')" title="Tasks">📅</button>
|
<button class="nav-tab" data-panel="tasks" data-label="Tasks" onclick="switchPanel('tasks')" title="Tasks">📅</button>
|
||||||
|
|||||||
Reference in New Issue
Block a user