Commit Graph

164 Commits

Author SHA1 Message Date
ekko 18618ad8ea fix bridge terminal error detection (#1890) 2026-07-02 09:54:04 +08:00
ekko 9e424cf67c fix Hermes plugin management (#1889) 2026-07-02 09:17:47 +08:00
ekko 5b3e7a0a8f [codex] refresh chat input toolbar (#1883)
* refresh chat input toolbar

* fix chat input ci checks

* tune mobile chat input sizing

* compact mobile settings button

* swap model and settings toolbar buttons

* restore mobile settings chevron

* compact mobile model button

* avoid mobile voice overlay overlap

* strengthen voice overlay background

* raise mobile voice overlay layer
2026-07-01 17:29:27 +08:00
Zhicheng Han ce06c6f6f9 修复 Windows 跨盘符 junction 文件夹选择器 (#1868)
* fix Windows workspace junction picker

* docs: mark Windows junction hotfix PR
2026-07-01 15:30:12 +08:00
ekko 355cefd171 bump web ui to 0.6.23 (#1875) 2026-07-01 10:34:34 +08:00
ekko 15e1f3df7d stream global agent tts segments (#1873) 2026-07-01 10:01:32 +08:00
ekko 751802fbd4 [codex] fix desktop mcp shutdown (#1871)
* fix desktop mcp shutdown

* docs desktop mcp shutdown
2026-07-01 09:21:25 +08:00
Zhicheng Han 899520c1b8 新增 profile 配置编辑入口 (#1860)
* Add profile config edit affordance

* fix: focus profile config editor route

---------

Co-authored-by: ekko <fqsy1416@gmail.com>
2026-06-30 20:02:24 +08:00
Zhicheng Han 7da611cf75 fix: add configurable chat input height (#1859) 2026-06-30 19:42:09 +08:00
Zhicheng Han 371e29baf6 fix: clarify new chat drawer action (#1855) 2026-06-30 19:33:59 +08:00
Zhicheng Han 08b7813882 fix: safely show workspace symlink folders (#1854)
* fix: safely show workspace symlink folders

* docs: add chat-chain fragment for workspace picker
2026-06-30 19:30:00 +08:00
ekko 733389b109 [codex] add web petdex pets (#1847)
* add web petdex pets

* fix web pet test defaults

* avoid pet socket without active pet
2026-06-30 12:12:29 +08:00
ekko bacf13df27 add skill editing (#1843) 2026-06-30 09:28:00 +08:00
ekko caf62b92e4 [codex] add Windows workspace drive picker (#1841)
* add windows workspace drive picker

* docs: record windows workspace drive picker
2026-06-30 08:59:41 +08:00
Zhicheng Han b42049c4e8 修复内置 Provider 危险操作文案 (#1840)
* fix: clarify built-in provider destructive actions

* docs: record PR number for provider action fix
2026-06-30 08:34:58 +08:00
Zhicheng Han d08156d7be 修复 History 保留本地归档状态 (#1838)
* fix: preserve archive state in history sessions

* docs: record PR number for archive state fragment

* test: cover api server archive history merge

* fix archive only chat session

---------

Co-authored-by: ekko <fqsy1416@gmail.com>
2026-06-30 08:21:02 +08:00
ekko 0c9d4e6046 bump web ui to 0.6.22 (#1830) 2026-06-29 13:19:11 +08:00
ekko 8ef700bee9 [codex] fix MoA command bridge events (#1829)
* feat: add MoA combination models

* fix moa command bridge events

* fix moa display history isolation

* fix moa resume and locale coverage
2026-06-29 12:25:10 +08:00
ekko 5cc62f28eb add session archive flow (#1805) 2026-06-26 13:50:21 +08:00
ekko f61afb41ca add learn bridge command (#1799) 2026-06-26 08:21:06 +08:00
ekko 983e16714c fix bridge session workspace cwd (#1796) 2026-06-25 17:53:58 +08:00
ekko 2e6d0e8c1f bump version and changelog to 0.6.21 (#1786) 2026-06-25 11:47:55 +08:00
ekko f4e4296a70 [codex] stop bridge broker on restart by default (#1784)
* stop bridge broker on restart by default

* update generated openapi spec
2026-06-25 11:05:50 +08:00
ekko 1595fc2509 Document learn command integration plan (#1780) 2026-06-25 10:02:29 +08:00
ekko d620e48184 Add workflow run rerun controls (#1778) 2026-06-25 09:37:04 +08:00
ekko f20e20f901 [codex] align chat headers (#1777)
* align chat headers

* document chat header alignment

---------

Co-authored-by: Codex <codex@openai.com>
2026-06-25 07:37:38 +08:00
ekko 1f39c397e3 release 0.6.20 workflow launch (#1769) 2026-06-24 18:14:25 +08:00
ekko f5a292663b [codex] Complete workflow run execution (#1759)
* feat: add workflow builder page

* Add workflow schema and editor controls

* feat: add workflow builder persistence

* feat: add workflow socket and agent skills

* feat: complete workflow run execution

* test: fix workflow ci coverage failures

---------

Co-authored-by: Codex <codex@openai.com>
2026-06-24 12:54:08 +08:00
ekko 7996ed24d3 bump 0.6.19 changelog (#1742) 2026-06-23 09:58:28 +08:00
ekko 71eddf9b68 fix mcu double click and xiaofanghe links (#1740) 2026-06-23 09:21:55 +08:00
ekko 251e9a5e8a [codex] fix new chat default model selection (#1736)
* fix new chat default model selection

* add chat chain note for new chat model default
2026-06-22 20:20:24 +08:00
ekko af07ed00a3 fix coding agent model switching (#1725) 2026-06-22 10:25:23 +08:00
ekko 6143b2d54d feat(jobs): add cron job sort toggle (#1722)
* feat(jobs): add sort toggle for cron jobs by name or creation time

* feat(jobs): improve sort UI with separator, rename labels, toggle direction, default to name sort

* fix(jobs): use scalar props for sort to fix Vue reactivity on time toggle

* docs: add chat chain change fragment for jobs sort toggle (#1716)

* fix: remove unused onOutlineMessagesLoaded imported from outline-qa branch

* add jobs sort tooltip i18n

---------

Co-authored-by: WenhuaXia <wenhua_xia@163.com>
2026-06-22 08:54:18 +08:00
ekko 39e331b463 Update OpenAPI schema (#1709) 2026-06-21 13:13:05 +08:00
ekko 4c4625eafc Bump Web UI to 0.6.18 (#1696) 2026-06-20 20:23:56 +08:00
ekko b2d8f1c12d split studio mcp toolsets (#1687) 2026-06-20 11:04:03 +08:00
ekko fa92b4157e [codex] increase goal evaluate timeout (#1686)
* fix(goal): increase goal evaluate timeout from 5s to 120s

5s timeout from #1580 is too aggressive for users with remote/slow LLM
services. Goal judge calls silently fail causing goal continuation to
never enqueue, leaving the goal stuck at 1 turn.

Align with auxiliary.goal_judge.timeout default (120s) in config.yaml.

* docs: note goal evaluate timeout change

---------

Co-authored-by: WenhuaXia <wenhua_xia@163.com>
2026-06-20 10:18:04 +08:00
ekko 842cf64360 fix: prevent run.failed from overwriting assistant message with substantial content (#1685)
When a run.failed event fires while the assistant message is still
streaming, addAgentErrorMessage previously unconditionally overwrote
the message with an error — losing the assistant reply even if it had
already produced meaningful output. This commonly happened during
Socket.IO disconnects in long tool-use runs.

The fix checks whether the streaming message has substantial content
(>100 chars). If so, it only closes the stream and appends a separate
error message instead of overwriting. For empty/trivial messages,
the original overwrite behavior is preserved since the run failed
before producing useful output.

Fixes #1644

Co-authored-by: Andy365-365 <andy365-365@users.noreply.github.com>
2026-06-20 10:12:20 +08:00
Zhicheng Han f5be266775 fix(group-chat): separate UI history from model context (#1678)
* group-chat: separate UI history from model context

* docs: note group-chat context chain changes

* fix: pass group-chat trigger message cursor
2026-06-20 09:50:56 +08:00
ekko b8e71c9e41 add disabled settings PCB badge (#1677) 2026-06-19 18:28:43 +08:00
ekko f2ec4b1287 align bridge history reasoning replay (#1674) 2026-06-19 16:31:41 +08:00
Zhicheng Han 226338f789 修复克隆 Profile 后模型列表为空 (#1666)
* fix: preserve cloned profile model auth

* narrow cloned profile auth copy

---------

Co-authored-by: ekko <fqsy1416@gmail.com>
2026-06-19 16:00:33 +08:00
Zhicheng Han d005dd5ff9 fix: show upload error details (#1665) 2026-06-19 15:42:25 +08:00
ekko 4e4c10f6e1 [codex] add fork message action (#1670)
* feat(chat): add message fork action

Use a Y-shaped repo-forked icon in fork UI and expose the current-tail /fork action in the last message meta action row instead of the input toolbar. Keep terminal fork commands out of optimistic run/thinking state so no model activity is implied.

* fix(chat): debounce fork message action

* fix chat session click after fork

---------

Co-authored-by: Zhicheng Han <zhicheng.han@mathematik.uni-goettingen.de>
2026-06-19 15:31:35 +08:00
Zhicheng Han 7ce96c0cd3 fix: persist chat tool drawer width (#1664) 2026-06-19 15:31:20 +08:00
Zhicheng Han 7bbe155b12 显示 fork 分割线并持久化 fork 点 (#1656)
* feat: add local chat fork command

* docs: add chat chain fragment for fork command

* feat(chat): persist fork point metadata

Record the copied child message that marks the fork boundary and surface it through resume/session client state.

* feat(chat): show fork timeline divider

Render fork lineage inline after the copied fork point and link back to the original session with in-app switching.

* fix(chat): use branch title and trim fork divider

Default fork titles now use branch: <original title>; the fork divider uses a branch icon and relies on the parent title link instead of a duplicate view-original button.

* fix(chat): preserve fork divider hydration metadata

* test(chat): accept fork command alias in registry contract

---------

Co-authored-by: ekko <152005280+EKKOLearnAI@users.noreply.github.com>
2026-06-19 15:18:31 +08:00
Zhicheng Han 0de8775f24 fix: show dates for older chat messages (#1662) 2026-06-19 14:57:27 +08:00
ekko 8a9b7b6c5d [codex] fix mcu active device login (#1668)
* fix mcu active device login

* add mcu relay voice support
2026-06-19 12:42:25 +08:00
ekko 8119a7403d drop inherited anthropic auth token (#1641) 2026-06-18 12:46:41 +08:00
paulocavallari 016df1e8ad fix: prevent quadratic BPE token-counting hang on long CJK runs (#1640)
* fix(context-compressor): guard token counting against quadratic BPE hang on long CJK runs

js-tiktoken's BPE merge loop is O(n^2) over the bytes of a single
pre-tokenizer piece. The GPT pat_str groups contiguous \p{L} characters
into one piece, and CJK text has no spaces, so a long CJK run becomes a
single huge piece. A ~14k-char CJK message (~42k bytes) produced ~1.8B
operations, pinning the Node event loop at 100% CPU. encode() never
throws in this case — it just hangs — so the existing catch-based
heuristic fallback never fired, and the whole server became unresponsive
(local HTTP requests timed out, nginx returned 504).

Detect a pathological contiguous letter/CJK run (>2000 chars) up front in
countTokens and countTokensForModel and use the cheap CJK-aware heuristic
instead. Normal text, even very long but space-separated, still takes the
exact tiktoken path.

Adds regression tests covering the CJK hang, normal text, and long
space-separated text.

* docs: add chat-chain-changes fragment for CJK token-counting guard

---------

Co-authored-by: paulocavallari <paulocavallari@users.noreply.github.com>
2026-06-18 10:41:48 +08:00