Fix bridge history, profile models, and Windows gateway handling (#845)

* feat: support profile-aware group chat bridge flows

* feat: route cron jobs through hermes cli

* Fix group chat routing and isolate bridge tests

* Add Grok image-to-video media skill

* Default Grok videos to media directory

* Fix bridge profile fallback and cron repeat clearing

* Refine bridge chat and gateway platform handling

* Filter bridge tool-call text deltas

* Preserve structured bridge chat history

* Prepare beta release build artifacts

* Fix Windows run profile resolution

* Fix Windows path compatibility checks

* Fix profile-scoped model page display

* Hide Windows subprocess windows for jobs and updates

* Hide Windows file backend subprocess windows

* Avoid Windows gateway restart lock conflicts

* Treat Windows gateway lock as running on startup

* Force release Windows gateway lock on restart

* Tighten Windows gateway lock cleanup

* Update chat e2e source expectation

* Bump package version to 0.5.30

---------

Co-authored-by: Codex <codex@openai.com>
This commit is contained in:
ekko
2026-05-19 16:09:59 +08:00
committed by GitHub
parent 3d74d78698
commit 9a9416c99c
129 changed files with 7017 additions and 1838 deletions
+12 -18
View File
@@ -33,7 +33,7 @@
### AI Chat
- Real-time chat streaming over Socket.IO `/chat-run`; API Server runs consume Hermes Gateway streaming responses
- Real-time chat streaming over Socket.IO `/chat-run`; chat runs execute through the Hermes agent bridge
- Multi-session management — create, rename, delete, switch between sessions
- **Self-built session database** — local SQLite storage for Web UI sessions; Hermes state.db remains a read-only source for Hermes history APIs
- Session grouping by source (Telegram, Discord, Slack, etc.) with collapsible accordion
@@ -64,7 +64,6 @@ Unified configuration for **8 platforms** in one page:
- Credential management writes to `~/.hermes/.env`
- Channel behavior settings write to `~/.hermes/config.yaml`
- Auto gateway restart on config change
- Per-platform configured/unconfigured status detection
### Usage Analytics
@@ -90,13 +89,11 @@ Unified configuration for **8 platforms** in one page:
- Provider URL auto-detection for non-v1 API versions (e.g. `/v4`)
- Provider-level model grouping with default model switching
### Multi-Profile & Gateway
### Multi-Profile
- Create, rename, delete, and switch between Hermes profiles
- Clone existing profile or import from archive (`.tar.gz`)
- Export profile for backup or sharing
- Multi-gateway management — start, stop, and monitor gateway per profile
- Auto port conflict resolution
- Profile-scoped configuration and cache isolation
### File Browser
@@ -125,7 +122,7 @@ Unified configuration for **8 platforms** in one page:
### Logs
- View agent / gateway / error logs
- View agent / server / error logs
- Filter by log level, log file, and keyword
- Structured log parsing with HTTP access log highlighting
@@ -143,7 +140,7 @@ Unified configuration for **8 platforms** in one page:
- Session reset (idle timeout, scheduled reset)
- Privacy (PII redaction)
- Model settings (default model & provider)
- API server configuration
- Profile and provider configuration
### Web Terminal
@@ -180,7 +177,7 @@ bash <(curl -fsSL https://raw.githubusercontent.com/EKKOLearnAI/hermes-web-ui/ma
hermes-web-ui start
```
> WSL auto-detects and uses `hermes gateway run` for background startup (no launchd/systemd).
> WSL uses the same Web UI daemon startup flow as other local installs; no separate gateway service is started by Web UI.
### Docker Compose
@@ -232,8 +229,6 @@ These variables configure Hermes Web UI itself. Provider API keys and Hermes Age
| `MAX_DOWNLOAD_SIZE` | `200MB` | Maximum file download size. |
| `MAX_EDIT_SIZE` | `10MB` | Maximum editable file size. |
| `WORKSPACE_BASE` | `/opt/data/workspace` | Base directory for workspace browsing. |
| `GATEWAY_HOST` | `127.0.0.1` | Default gateway host written into profile config. |
| `HERMES_WEB_UI_STOP_GATEWAYS_ON_SHUTDOWN` | environment-dependent | Whether Web UI shutdown also stops managed gateways. |
### CLI Commands
@@ -255,10 +250,8 @@ These variables configure Hermes Web UI itself. Provider API keys and Hermes Age
On startup the BFF server automatically:
- Validates `~/.hermes/config.yaml` and fills missing `api_server` fields
- Backs up original config to `config.yaml.bak` if modified
- Detects and starts the gateway if needed
- Resolves port conflicts (kills stale processes)
- Initializes Web UI data directories, local databases, and bundled skills
- Starts the Hermes agent bridge used by `/chat-run`
- Opens browser on successful startup
---
@@ -273,7 +266,7 @@ npm run dev
```
- Frontend: http://localhost:5173
- BFF Server: http://localhost:8648 (proxies to Hermes on 8642)
- BFF Server: http://localhost:8648
```bash
npm run build # outputs to dist/
@@ -284,10 +277,11 @@ See [DEVELOPMENT.md](./DEVELOPMENT.md) for project development guidelines.
## Architecture
```
Browser → BFF (Koa, :8648) → Hermes Gateway (:8642)
Browser → BFF (Koa, :8648) → Socket.IO /chat-run
Hermes CLI (sessions, logs, version)
Hermes agent bridge → Hermes Agent runtime
Hermes CLI / profiles
~/.hermes/config.yaml (channel behavior)
~/.hermes/auth.json (credential pool)
Tencent iLink API (WeChat QR login)
@@ -295,7 +289,7 @@ Browser → BFF (Koa, :8648) → Hermes Gateway (:8642)
The frontend is designed with **multi-agent extensibility** — all Hermes-specific code is namespaced under `hermes/` directories (API, components, views, stores), making it straightforward to add new agent integrations alongside.
The BFF layer handles API proxy (with path rewriting), SSE streaming, file upload and download (multi-backend: local/Docker/SSH/Singularity), session CRUD via CLI, config/credential management, WeChat QR login, model discovery, skills/memory management, log reading, and static file serving.
The BFF layer handles Socket.IO chat streaming, the Hermes agent bridge, file upload and download (multi-backend: local/Docker/SSH/Singularity), session CRUD, config/credential management, WeChat QR login, model discovery, skills/memory management, log reading, and static file serving.
## Tech Stack