fix(group-chat): show warning when adding agent without selecting a room#3
Draft
Andy365-365 wants to merge 240 commits into
Draft
fix(group-chat): show warning when adding agent without selecting a room#3Andy365-365 wants to merge 240 commits into
Andy365-365 wants to merge 240 commits into
Conversation
Move TTS routes behind auth middleware and attach JWT to local proxy requests from the frontend. Previously both /api/hermes/tts and /api/tts/proxy/audio/speech were publicly accessible without authentication, allowing unauthenticated callers to consume Edge TTS resources through the server. Changes: - server: move ttsRoutes from public to protected route section - client: auto-attach JWT when baseUrl is a local path (/...) and no external API key is configured - client: import getApiKey() instead of raw localStorage access
* try vue virtual scroller for messages * hide inactive virtual scroller rows
…KKOLearnAI#1105) Adds an opt-in environment variable to suppress the npm-registry update check. When set, three things change: 1. checkLatestVersion() returns immediately (no outbound fetch) 2. startVersionCheck() does not arm the 30-minute interval 3. /api/health returns webui_latest='' and webui_update_available=false Use case: hermes-web-ui is bundled inside a packaged distribution like a desktop app where the user cannot `npm install -g hermes-web-ui@latest` to apply an upgrade. The 'update available' prompt is then misleading (the user would have to wait for the wrapper app to ship a new release), and the recurring HTTPS call to the npm registry is unnecessary noise. Set HERMES_WEB_UI_DISABLE_UPDATE_CHECK=true | 1 | on | yes to disable. The default behavior is unchanged. Discussed in EKKOLearnAI#1091 — proposed by @EKKOLearnAI.
* feat: add coding agent install status * chore: add latest claude opus model preset * feat: add coding agent config editing * Add scoped coding agent launch proxy * Add Codex proxy plan * fix coding agents codex launch proxy * fix codex catalog context test --------- Co-authored-by: Codex <codex@openai.com>
* fix windows coding agent status detection * fix windows coding agents detection and terminal launch - Fix Claude Code status detection on Windows by prioritizing .cmd files over unix-style scripts when using 'where' command - Fix command execution logic for .cmd/.bat files to use proper cmd.exe quoting instead of complex cmdQuote function - Fix native terminal launch on Windows by properly escaping shellCommand in PowerShell Start-Process instead of using empty $args[0] These changes resolve issues where Claude Code was incorrectly detected as uninstalled on Windows and native terminal launch failed with PowerShell argument errors. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix claude code custom model launch * fix windows filename sanitization for coding agent config paths - Replace invalid filename characters (< > : " / \ | ? *) with underscores in provider/profile names - Prevents ENOENT errors when provider names contain Windows-invalid characters like colons - Fixes issue where 'custom:glm-coding-plan' provider would fail to create config directory on Windows This change ensures that coding agent configuration paths are valid on all platforms while preserving the semantic meaning of provider names. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * remove stale planning docs --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* update coding agents i18n and changelog * move virtual scroller to dev dependencies
Test console merge.
* feat(mcp): add MCP server management UI - Server CRUD: add/edit/remove with YAML/JSON Monaco editor - raw_config passthrough: zero field loss on edit/toggle - tool_details embedding: single-request card data (1+N → 1) - Auto-retry exponential backoff (2s→32s, max 5 retries) - Route safety guards (hasRoute) for dynamic sidebar - i18n: 9 languages (de/en/es/fr/ja/ko/pt/zh/zh-TW) - 19 unit tests + 8 UX browser tests - 35 files, +2933 lines * fix mcp management lifecycle --------- Co-authored-by: Crafter-feng <succeed_happu@163.com>
…EKKOLearnAI#1145) When the model interleaves narration text with tool calls within one turn ("text → tool → more text"), the assistant text was rendered split across the tool boundary — a word could be cut in half, e.g. the part before the tool call ending mid-word and the remainder appearing after the tool card. Root cause: the agent bridge (`hermes_bridge.py`) accumulated streamed text in `RunRecord.deltas` and tool/lifecycle events in `RunRecord.events` as two parallel lists with no relative ordering. On poll, the aggregated text (`"".join(deltas)`) and the events were delivered separately, and the Node consumer (`handle-bridge-run.ts`) processed all `chunk.events` (including `tool.started`) before the aggregated `chunk.delta`. The real interleaving of text and tool calls was therefore lost, splitting the text around the tool boundary. Fix: - Bridge: `stream_callback` now also appends each text chunk as an ordered `stream.delta` event into the same `events` list as tool.started/tool.completed, preserving true interleaving. `deltas` is still kept for the aggregated `output`/resume snapshot. - Node: process `stream.delta` events inline within the events loop (in true order), and skip the aggregated `chunk.delta` when ordered `stream.delta` events were present for that chunk (avoids duplicate text). Text-delta handling was extracted into `processBridgeTextDelta` and reused by both paths. Verified end-to-end: narration that calls a tool mid-sentence now streams and persists as coherent text in the exact order produced, with no word split across the tool boundary. Co-authored-by: Paulo Cavallari <paulocavallari@users.noreply.github.com>
…I#1147) * Add desktop packaging workflow * Add desktop package homepage * Fix desktop default credential prompt * Suppress default credential prompt on desktop * Publish desktop artifacts on release; reduce CI to PR smoke test Add desktop-release.yml triggered on release publish (mirroring docker-publish.yml) to build all platforms and upload .dmg/.exe/ .AppImage/.deb to the GitHub Release. Trim build.yml desktop job to a PR-only Linux x64 smoke test, since release artifacts are now produced by desktop-release.yml. This drops per-push and macOS/Windows packaging from regular CI. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * Fix desktop Hermes data home on Windows --------- Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* fix desktop preload fetch typing * rename desktop app to Hermes Studio * rename desktop package to Hermes Studio * update Hermes Studio desktop icons * configure desktop signing and app id * force desktop api calls to local server * isolate desktop agent bridge ports * bundle MCP support in desktop Python * change desktop default port to 8748 * restore webui production port copy
…I#1148) Provider auth controllers derived the credential directory with `authPath.substring(0, authPath.lastIndexOf('/'))`. On Windows paths use backslashes, so `lastIndexOf('/')` returns -1 and the slice yields an empty string, making `mkdirSync('')` throw `ENOENT: no such file or directory, mkdir ''` during OAuth login. Replace the manual slicing with the cross-platform `path.dirname()` in codex-auth (auth.json + codex CLI token paths), xai-auth, and nous-auth. Fixes Codex/xAI/Nous login on Windows. Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
…KOLearnAI#1149) Profile avatars are sent to /profiles/:name/avatar as base64 image data URLs in a JSON body. The handler allows up to 1MB of raw image data, which is ~1.37MB once base64-encoded — larger than @koa/bodyparser's default 1mb jsonLimit, so uploads were rejected with HTTP 413 before reaching the handler. Set jsonLimit/textLimit to 4mb, leaving the handler's own 1MB raw-size check as the authoritative limit (now returning a clear 400 instead of a confusing 413). Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
* chore: bump version to 0.6.6 * fix desktop release artifact metadata globs
* Fix Windows bundled Hermes CLI launcher * Update kanban service tests for Hermes process wrapper --------- Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
* Redesign website landing page * Fix website type check
Co-authored-by: openclaw <openclaw@openclaws-Mac-mini.local>
* feat: add workspace folder actions * docs: add workspace folder action chain note * test: cover workspace folder routes
Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
* Split Hermes bridge Python modules * Add Hermes write gate controls * Adjust approval prompt width * Improve write gate and desktop startup UX * Fix bridge runtime patch sync --------- Co-authored-by: Codex <codex@openai.com>
* Update runtime version management * Avoid blocking desktop startup on bridge readiness * Remove incompatible cached Web UI versions on desktop startup * Remove incompatible Web UI downgrade targets
Co-authored-by: Codex <codex@openai.com>
* feat: redesign chat sidebars * feat: embed chat tool panel * fix: make chat tool panel split layout * fix: keep chat tool splitter line visible * fix: restore chat tool panel divider * fix: show full chat tool resize handle * fix: align embedded terminal headers * fix: give chat tool resize handle solid background * fix: simplify chat tool resize handle grip * fix: default tool panel to workspace * revert: keep tool panel resize behavior simple * fix: keep chat input in resizable pane * fix: leave gap in chat tool resize divider * fix: disable model picker for coding agents * fix: update chat layout CI coverage * fix: tighten mobile context usage spacing * fix: adjust context usage mobile spacing * fix: refine mobile sidebar and skills search * feat: stabilize chat sidebar layout * fix: polish desktop startup and session sidebar
* tune chat history loading controls * tune chat scroll controls --------- Co-authored-by: Codex <codex@openai.com>
* Refresh thinking indicator * Add chat chain change fragment
…LearnAI#1524) - Add a refresh button beside the sidebar model selector label that force-reloads available models from the server (which reads config.yaml from disk on every request) - Preserve the user's manually selected model on refresh when it still exists; fall back to the config default when it disappeared - Add models.refresh string to all locale files - Cover preserveSelection behavior with store unit tests Co-authored-by: abner <nimengbo@qq.com>
Co-authored-by: Codex <codex@openai.com>
- fix(models): remove overflow:hidden from .auxiliary-panel that clipped NSelect dropdown in vision model editor modal, causing UI freeze (dropdown unopenable, cancel button unresponsive)
When the user opens the group chat, enters the 'add agent' modal, and clicks 'Add' without having selected/joined a room first, confirmAddAgent silently returned due to missing currentRoomId. Now it shows a clear warning message instead.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
When the user opens the group chat, enters the add agent modal, and clicks Add without having selected/joined a room first,
confirmAddAgentsilently returned due to missingcurrentRoomId. No feedback was shown to the user.Fix
store.currentRoomIdguard fromselectedProfileinconfirmAddAgentmessage.warningwith proper i18n text when no room is selectedselectRoomFirsttranslation key to all locale files (en, zh, zh-TW, ja, ko, fr, de, es, pt, ru)