Commit Graph

182 Commits

Author SHA1 Message Date
sir1st ce04b10eee Fix Windows bundled Hermes CLI launcher (#1159)
* Fix Windows bundled Hermes CLI launcher

* Update kanban service tests for Hermes process wrapper

---------

Co-authored-by: xingzhi <chuzihao.czh@alibaba-inc.com>
2026-05-30 18:57:04 +08:00
ekko b015e70b9d [codex] fix MCP management lifecycle (#1144)
* 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>
2026-05-30 11:06:08 +08:00
ekko 9643a083d6 fix bridge mcp tool discovery (#1139) 2026-05-30 08:37:02 +08:00
ekko e3359c671c [codex] 修复 Windows Coding Agents 安装状态检测 (#1126)
* 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>
2026-05-29 20:26:02 +08:00
ekko 9838173365 fix builtin provider flags (#1125) 2026-05-29 19:18:40 +08:00
ekko 285f623d6f [codex] 修复 Coding Agents 的 Codex 启动和代理隔离 (#1123)
* 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>
2026-05-29 19:06:54 +08:00
ekko 717f577380 fix group chat agent mentions (#1111) 2026-05-29 09:02:38 +08:00
ekko 14466dfc9f make bridge worker transport configurable (#1106) 2026-05-28 22:33:33 +08:00
ekko d610c3d1b9 fix preview runtime isolation and shutdown (#1088) 2026-05-28 13:50:52 +08:00
ekko 1734bac9b4 [codex] add version preview workflow (#1086)
* add version preview workflow

* fix sidebar group test

* fix legacy usage schema migration
2026-05-28 12:30:49 +08:00
ekko a43ead594e fix bridge surrogate json encoding (#1059) 2026-05-27 11:44:04 +08:00
ekko eca06faaa0 add web ui openrouter attribution (#1057) 2026-05-27 11:21:12 +08:00
ekko 07c4c1ddd5 fix provider base URL env handling (#1054) 2026-05-27 10:41:29 +08:00
ekko a10e171082 Add history import controls (#1053) 2026-05-27 10:05:52 +08:00
ekko 42f7b64ffb update changelog and context default (#1045) 2026-05-26 19:35:48 +08:00
ekko 82680f5c0b fix clarify replay and compression timeout (#1044) 2026-05-26 19:15:22 +08:00
ekko e926a8e2fb fix chat queue promotion (#1042) 2026-05-26 17:39:38 +08:00
ekko b0000b4c38 fix context compressor summary prompt (#1041) 2026-05-26 17:29:19 +08:00
ekko ad1cab277a fix context token resume (#1039) 2026-05-26 16:32:07 +08:00
ekko e686f0277a [codex] scope bridge terminal env refresh to worker startup (#1031)
* fix(bridge): refresh terminal env from profile config on profile switch

Profile switching changes HERMES_HOME but the TERMINAL_* environment
variables (TERMINAL_ENV, TERMINAL_SSH_HOST, etc.) still point to the
root config's terminal settings set at gateway startup.

Add _refresh_terminal_env() that re-reads terminal config from the
active profile's config.yaml and sets the corresponding TERMINAL_* env
vars. Call it in:
- AgentPool.get_or_create(): when creating a session for a profile
- AgentPool._run_chat(): before agent execution, inside _profile_env

Errors are handled gracefully: YAML parse failures log to stderr,
terminal_tool cache invalidation failures are silently ignored, and
missing config files are skipped without error.

* fix(bridge): refresh terminal env in worker profile setup

_set_worker_profile_env() handles broker-spawned worker subprocesses
that are isolated per profile. The worker inherits TERMINAL_* env vars
from the broker (root config), and _profile_env() is a no-op in worker
mode, so terminal config was never refreshed for non-default profiles.

Adding _refresh_terminal_env() here means each worker subprocess reads
its own profile's config.yaml terminal section on startup, solving
profile-isolated terminal backends (e.g. SSH per profile).

* fix bridge terminal env refresh scope

* refresh worker profile env for new agents

* avoid bridge worker restart for channel config

* align config controller bridge restart tests

---------

Co-authored-by: GoldenFish123321 <goldfishx@gmail.com>
Co-authored-by: GoldenFishX <golden_fish@foxmail.com>
2026-05-26 00:15:27 +08:00
ekko 689237f0fd fix job deliver target options (#1026) 2026-05-25 20:04:50 +08:00
ekko badb17cf8e [codex] integrate goal command workflow (#1025)
* feat: integrate goal command workflow

* fix: keep goal done visible

* fix: add goal done slash command

* fix: promote queued message on run start
2026-05-25 19:26:23 +08:00
ekko 0eab6a1125 Fix plan command support in web bridge (#1018)
* fix: support plan command in web bridge

* fix: preserve queued bridge messages

* fix: avoid duplicate queued plan messages

* fix: preserve plan command semantics

---------

Co-authored-by: Codex <codex@openai.com>
2026-05-25 15:48:17 +08:00
ekko 6e2e502a75 fix: clean stale pid on stop (#1015) 2026-05-25 13:31:12 +08:00
ekko d03d5e6ac5 remove auth disabled support (#1013) 2026-05-25 12:49:01 +08:00
ekko 56c6cf3e2d fix profile-aware session history actions (#1011) 2026-05-25 12:32:42 +08:00
ekko bbb8b1d536 [codex] fix bridge tool marker flush persistence (#1002)
* fix: don't drop pending tool-call-marker prefix on tool.started/run.done

The `filterBridgeToolCallMarkupDelta` filter holds back any text that
ends in a partial prefix of `[Calling tool:` (i.e. `[`, `[C`, `[Ca`,
..., `[Calling tool`) so it can decide whether the buffered chars are
the start of a tool-call markup block to be hidden, or just regular
text to be released by the next delta.

The bug: that "release on next delta" assumption breaks at TWO points:

1. **On `tool.started`**: the next chunk for this assistant message is
   the tool call itself, NOT a follow-up text delta. Buffered chars
   sit there forever and nothing flushes them — they vanish silently
   from the user-visible stream.

2. **On run completion**: the code did
   `state.bridgePendingToolCallMarkup = undefined` directly, dropping
   any pending chars without forwarding them.

Both cases produce the user-visible symptom of "abrupt cuts in text
right before/after tool calls (terminal, read_file, write_file...)" —
1 to 13 characters disappear at exactly the boundary where the model
was emitting natural prose that happened to end with `[`.

The fix introduces `flushPendingToolCallMarkup(state)` and calls it:

- In the `tool.started` branch BEFORE recording the tool call, so the
  buffered chars are appended to the open assistant message and emitted
  as a normal `message.delta` to the client.
- At run-done BEFORE clearing the buffer, same flush path.

This is a pure recovery patch — no change to the marker detection
logic itself. If the buffer turns out to actually be a real
`[Calling tool: ...]` marker that just hasn't completed yet, that
case is still caught by the existing `markerIdx >= 0` branch in the
filter on the next delta. The only behavioral change is that the
"orphan" cases (text that ends with `[` but never becomes a marker)
are no longer dropped.

* fix bridge marker flush persistence

---------

Co-authored-by: Paulo Cavallari <paulocavallari@users.noreply.github.com>
2026-05-25 11:09:16 +08:00
ekko 9e35d81f48 fix mobile chat run reconnect (#993) 2026-05-25 11:08:54 +08:00
ekko 61b41512d4 [codex] increase login lock threshold (#984)
* increase login ip lock threshold

* show login lock recovery commands
2026-05-24 22:36:21 +08:00
ekko 4176923bac support external skill sources (#981) 2026-05-24 19:47:52 +08:00
ekko 6763721545 fix session links profile filtering (#979) 2026-05-24 19:30:32 +08:00
Maxim Kirilyuk acdf18793c feat: make navigation use native links (#973) 2026-05-24 19:13:42 +08:00
ekko e743c81ad3 [codex] add clarify support with response path tests (#972)
* feat: 新增 clarify(澄清/确认)交互支持

* test clarify response bridge path

---------

Co-authored-by: GoldenFish123321 <golden_fish@foxmail.com>
2026-05-24 18:09:39 +08:00
ekko a7f0a92fe6 fix session profile listing and cli sqlite warning (#971) 2026-05-24 17:54:17 +08:00
ekko f61a1d9454 [codex] fix auth startup and profile model defaults (#966)
* docs release 0.6.0 changelog

* fix auth startup and profile model defaults
2026-05-24 14:00:31 +08:00
ekko 634a622934 [codex] fix media skill profile auth and run events (#965)
* fix media skill profile auth and run events

* test bridge run profile context
2026-05-24 12:52:14 +08:00
ekko df41d6b051 [codex] Fix profile-aware session deep links (#962)
* feat: add session deep links for chats

* feat: add deep links for history and group chat

* Fix profile-aware session deep links

---------

Co-authored-by: Maxim Kirilyuk <werserk@inbox.ru>
2026-05-24 10:55:55 +08:00
Maxim Kirilyuk 070de2499e feat(chat): render fenced latex math blocks 2026-05-24 10:19:08 +08:00
Maxim Kirilyuk 981e2a1ad4 [verified] feat: render latex in chat markdown 2026-05-24 10:19:08 +08:00
ekko dca8fc6d8a Fix profile store mocks in usage tests 2026-05-24 10:11:03 +08:00
ekko f8a1b2f6ae Add default credential reset safeguards 2026-05-24 10:11:03 +08:00
ekko 9708a6a521 Scope files jobs and plugins to request profile 2026-05-24 10:11:03 +08:00
ekko 289a958684 Scope skills and memory to request profile 2026-05-24 10:11:03 +08:00
ekko 4db3940e65 Scope skill usage to request profile 2026-05-24 10:11:03 +08:00
ekko f372d0a905 Scope kanban and usage profile reads 2026-05-24 10:11:03 +08:00
ekko be2089e423 Scope channel settings to request profile 2026-05-24 10:11:03 +08:00
ekko 4f8bda9836 Test provider API key profile scoping 2026-05-24 10:11:03 +08:00
ekko 65a984c31a Fix provider management profile scoping 2026-05-24 10:11:03 +08:00
Codex 7b05731d44 Refine user profile access and chat sync 2026-05-24 10:11:03 +08:00
ekko 3f6a25d8f1 Add user-scoped Hermes profile access 2026-05-24 10:11:03 +08:00