- Add web terminal view with xterm.js and node-pty WebSocket backend
- Rewrite README with badges, feature table, mobile demo video
- Add package keywords and improved description for npm/GitHub SEO
- Fix node-pty spawn-helper missing execute permission after npm install -g
- Auto-fix node-pty permissions on CLI startup
- Fix duplicate 'error' key in en.ts and zh.ts i18n files
- Remove nested NSpin in PlatformSettings (causes invisible loading spinner)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Pre-generate auth token before server start and pass via AUTH_TOKEN env var
- Append token to startup URL for auto-login
- Reset api_server config values to defaults on startup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add token-based authentication with auto-generated token stored in server/data/.token
- Add login page with URL token auto-fill support
- Add route guards requiring auth for all pages except login
- Restructure routes: / for login, /chat for conversations
- Add skill enable/disable toggle via config.yaml skills.disabled
- Unify logo to /logo.png across sidebar, login, messages, and empty state
- Hide sidebar on login page, prevent flash with router.isReady()
- Fix session export JSON parse error when CLI returns non-JSON output
- Display token in CLI on server start
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add windowsHide: true to all spawn/execFile calls in bin and server code
to prevent new console windows from appearing on Windows.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Usage Stats page with token breakdown, model distribution, and 30-day trend
- Pass through cache/cost token fields in BFF (cache_read/write_tokens, reasoning_tokens, actual_cost_usd)
- Add CLI commands: -v/--version, -h/--help, update/upgrade with auto-restart
- Auto-open browser on startup, auto-kill port conflicts (cross-platform)
- Validate all api_server config fields on startup (enabled, host, port, key, cors_origins)
- Add streaming thinking video animation with tool calls panel
- Add context token usage display (used / total) in chat header
- Sidebar: white logo area with shadow, dance video beside logo (canvas seamless loop)
- Fix sidebar nav scroll (app-main overflow-y: auto)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- PID/log files moved to ~/.hermes-web-ui/ for WSL compatibility
- Replace all regex YAML parsing with js-yaml in filesystem.ts
- Auto-detect WSL and use hermes gateway run for background startup
- Stop command: SIGTERM with SIGKILL fallback, clean stale PIDs
- Setup script: auto-install Node.js and hermes-web-ui
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add Koa2 BFF layer for API proxy, file upload, session management
- Auto-check and enable api_server in ~/.hermes/config.yaml on startup
- Integrate sessions with Hermes CLI (list, get, delete)
- Add Logs page with level filtering, log file selection, and search
- Add CLI commands: start/stop/restart/status for daemon management
- Unify package.json for frontend and server dependencies
- Default port changed to 8648
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add attachment button, file picker, and preview area to ChatInput
- Render image/file attachments in user message bubbles (MessageItem)
- Add Attachment type and attachments field to Message interface
- Add POST /__upload endpoint to both Vite dev server and production server
for saving files to temp directory and returning local file paths
- Translate README to English
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Node.js fetch requires duplex option when streaming request body.
Read body chunks first, then forward as Buffer.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use native http module to serve built static files and proxy API
requests. No Vite dependency at runtime — only needed for building.
This fixes SFC compilation errors on global install.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Spawn-based approach fails on global install because node_modules
is hoisted. Use programmatic Vite API instead. Move vite, plugin-vue,
and sass to dependencies so they're available at runtime.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>