Commit Graph

501 Commits

Author SHA1 Message Date
ekko 0f33b4dafc Make desktop update downloads optional (#2094) 2026-07-16 10:03:38 +08:00
ekko 2b3e84a0af Open workflow execution records in a detail modal (#2093)
* Open workflow execution details in modal

* Update workflow detail E2E interaction
2026-07-16 09:23:22 +08:00
ekko 9e4164c113 fix group chat input background (#2092) 2026-07-16 09:14:04 +08:00
王.W acb12729fa fix(workflows): explain blocked execution paths (#2088)
Co-authored-by: Lux <wangw9475@agent.qq.com>
2026-07-16 08:51:52 +08:00
ekko db9e63ccd8 fix cross-platform voice capture and captions (#2086)
* fix cross-platform voice capture captions

* link voice capture changelog
2026-07-15 16:11:09 +08:00
ekko 77af609da3 add cross-platform PCM voice capture (#2084) 2026-07-15 15:44:32 +08:00
ekko 68379cb2dd Hide Windows chat console windows and prepare 0.6.30 (#2080) 2026-07-15 10:23:44 +08:00
ekko 3decc0e9c3 Support MoA presets in chat model selection (#2078) 2026-07-15 09:38:45 +08:00
mo 5eb1b94138 feat(workflow): add orchestration v2 (#2073)
* chore: initialize upstream-based workflow orchestration v2 draft

* feat(workflow): validate declarative edge orchestration

* feat(workflow): evaluate edge conditions safely

* feat(workflow): support declarative condition operators

* feat(workflow): evaluate edge route decisions

* feat(workflow): skip unmatched success branches

* feat(workflow): route failed node outcomes

* feat(workflow): validate node join mode

* feat(workflow): support all and any joins

* feat(workflow): schedule nodes on completion

* feat(workflow): store append-only edge evidence

* feat(workflow): persist edge decisions fail closed

* feat(workflow): expose edge evidence in run history

* feat(workflow): validate bounded feedback edges

* feat(workflow): compile single-entry natural loops

* feat(workflow): validate laminar nested loops

* feat(workflow): fail closed during graph preflight

* feat(workflow): preflight reruns and freeze loops

* feat(workflow): identify loop execution instances

* feat(workflow): execute bounded top-level loops

* feat(workflow): audit conditional loop exits

* feat(workflow): record loop iteration limits

* feat(workflow): identify edge iteration evidence

* feat(workflow): audit loop forward edges

* feat(workflow): persist loop epoch evidence

* feat(workflow): expose loop epochs in run history

* feat(workflow): record failed loop epochs

* feat(workflow): audit canceled loop epochs

* feat(workflow): audit loop agent timeouts

* feat(workflow): gate loop executions on approval

* feat(workflow): enforce run execution budget

* feat(workflow): enforce loop run deadline

* feat(workflow): bound loop approval waits

* feat(workflow): enforce DAG run deadline

* feat(workflow): enforce rerun deadline

* feat(workflow): guard rerun execution budget

* feat(workflow): run one downstream node after loop exit

* feat(workflow): dispatch persisted loop exit targets

* feat(workflow): honor conditional routing inside loop bodies

* feat(workflow): continue through post-loop DAGs

* feat(workflow): route post-loop failures

* feat(workflow): add secure definition portability

* feat(workflow): expose portability client API

* feat(workflow): add import and export controls

* feat(workflow): execute disjoint and nested loops

* feat(workflow): edit edge orchestration from canvas

* feat(workflow): show execution evidence in run history

* feat(workflow): edit node join policy

* feat(workflow): create connected nodes atomically

* test(workflow): cover orchestration canvas in browser

* refactor(workflow): unify laminar loop runtime

* fix(workflow): bind approvals to executions

* test(workflow): verify canvas interactions in browser

* feat(workflow): enforce execution identity policies

* feat(workflow): harden lifecycle recovery

* refactor(workflow): share fresh and rerun schedulers

* feat(workflow): harden orchestration evidence and portability

* fix(workflow): close final acceptance and canvas gaps

* test(workflow): add disposable live acceptance

* fix(workflow): migrate legacy execution evidence

* refactor(workflow): use icons for import and export

* refactor(workflow): use ctrl-z for canvas undo

* refactor(workflow): restore profile-default agent context

* fix(workflow): strip legacy policy from edge node copies

* feat(workflow): guide ordinary users through routing

* refactor(workflow): move field help into tooltips

* feat(workflow): validate typed condition values

* feat(chat): align maximum reasoning effort

* test(workflow): isolate manager SQLite runtime

Keep the WorkflowManager suite on a disposable SQLite directory so coverage workers cannot race the shared test-runtime database. Production and development database paths are unchanged.

* fix(workflow): keep Hermes API mode profile-owned

* fix(workflow): make imports portable across environments

Strip source runtime bindings from exports and legacy imports while keeping capability and skill checks at execution time. Address runtime subscription, feedback routing, approval cancellation, durable Session evidence, SQLite index migration, and compact evidence rendering.

* fix(bridge): reject unsupported reasoning effort

Keep Hermes API mode profile-owned while restoring explicit failure when the runtime cannot parse or apply a requested reasoning effort.

* test(workflow): use writable Session fixture workspace

* fix(workflow): align import export icon semantics

* feat(workflow): make execution details user friendly

* fix workflow replay and presentation regressions

---------

Co-authored-by: Lux <wangw9475@agent.qq.com>
Co-authored-by: ekko <fqsy1416@gmail.com>
2026-07-15 08:52:17 +08:00
ekko 3636f9603b inject Ekko provider and model context (#2071) 2026-07-14 17:12:42 +08:00
ekko d218d1fe81 add provider setup guidance (#2070)
* add provider setup guidance

* fix provider prompt e2e fixtures
2026-07-14 11:57:01 +08:00
ekko 640304375a fix: replay chat fade on session switch (#2069)
* fix: replay chat fade on session switch

* docs: link chat fade change fragment
2026-07-14 10:17:02 +08:00
ekko 937d0d8dd5 perf: optimize first-screen loading (#2068) 2026-07-14 09:21:01 +08:00
ekko 3fe9535e57 fix realtime voice recovery and approval overlay (#2067) 2026-07-14 08:46:21 +08:00
IvanShang e70c7bb186 fix: preserve extensions for Markdown downloads (#2058) 2026-07-14 08:45:58 +08:00
ekko 84d6d0e601 fix mobile voice transcription and Codex duplicate messages (#2066)
* fix Codex duplicate assistant messages

* fix mobile realtime voice transcription

* document mobile realtime voice behavior
2026-07-13 23:03:09 +08:00
ekko 160412cdef fix: add mobile browser speech fallback (#2064) 2026-07-13 21:57:18 +08:00
ekko 42c6b2c255 feat: add realtime voice mode for single chat (#2063) 2026-07-13 21:28:50 +08:00
ekko ea64f92cc5 fix: disable production Ekko memory database (#2060) 2026-07-13 16:07:24 +08:00
ekko f0399f4c11 feat: add durable Ekko Agent memory (#2057)
* add Ekko Agent chained memory

* harden Ekko agent provider integrations

* add model-driven Ekko memory review

* fix: harden Ekko memory summaries
2026-07-13 12:44:39 +08:00
ekko 70465210f6 add session model switch loading state (#2056) 2026-07-13 09:08:43 +08:00
Zhicheng Han fb16bbf529 feat(journey): improve graph exploration (#2055) 2026-07-13 09:08:12 +08:00
Abner defa013298 fix: preserve custom provider state in Studio bridge (#2054)
* fix: preserve custom provider state in Studio bridge

* docs: record Studio provider alias fix commit

* docs: link Studio provider fix PR

---------

Co-authored-by: abner <nimengbo@qq.com>
2026-07-13 08:55:02 +08:00
Zhicheng Han f1d1f90b46 fix(models): 同步 Provider 静态目录与缓存优先级 (#2051)
* feat(models): sync static provider catalogs

* fix(models): prefer live catalogs over static manifests
2026-07-13 08:05:40 +08:00
ekko 521bd426eb fix MiMo voice clone audio upload (#2046) 2026-07-12 09:49:16 +08:00
ekko 8e8c6a3f4b add ESP32-C3 v2 firmware (#2044) 2026-07-12 08:47:35 +08:00
ekko b11098e815 feat: unify model usage analytics (#2039)
* record unified session usage

* record Ekko model call usage

* record Hermes usage and add usage analytics
2026-07-11 13:35:03 +08:00
ekko 904ee7f9fe fix Bridge tool result context limits (#2036) 2026-07-11 11:10:07 +08:00
ekko c4082ee661 fix: guide Docker users through image upgrades (#2033)
* fix(docker): guard update button in Docker with structured guidance

Docker 环境下 UI 升级按钮不可用的问题修复:

后端:
- handleUpdate 中添加 Docker 环境检测,返回结构化的 Docker 升级指引
  (docker compose pull && docker compose up -d --force-recreate)
- health 接口添加 is_docker 字段,告知前端当前运行环境
- Docker 环境下自动禁用 npm registry 版本检查,消除每 30 分钟的外网请求
  (性能优化:减少不必要的网络 I/O 和重复的版本检查)

前端:
- AppSidebar 中在 Docker 模式下隐藏原有升级按钮,改为显示 Docker 专属
  升级按钮,点击后弹出包含 docker compose 命令的指引弹窗
- VersionManagementModal 的 isDesktopShell 条件保持不变
- 添加 9 种语言的 i18n 翻译键 (dockerUpdateTitle / dockerUpdateGuide
  / dockerUpdateNote)

Co-Authored-By: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>

* fix docker update guidance tests

* reuse update button for Docker guidance

* test Docker update routing

---------

Co-authored-by: suantea <suantea@users.noreply.github.com>
Co-authored-by: AtomCode (deepseek-v4-flash) <noreply@atomgit.com>
2026-07-11 10:24:39 +08:00
IvanShang 657e1e1013 fix(client): handle malformed session export filenames (#2026)
* fix(client): handle malformed session export filenames

* docs: add session export chain fragment
2026-07-11 10:02:08 +08:00
ekko c99ccc5005 [codex] collapse workspace diffs and restore chat input background (#2032)
* restore dark chat input background

* collapse workspace diff details

* link workspace diff change record
2026-07-11 09:55:15 +08:00
ekko 3d401dd907 [codex] compress MCU uplink audio with IMA-ADPCM (#2024)
* add MCU uplink ADPCM compression

* link MCU ADPCM change record
2026-07-10 20:10:21 +08:00
ekko ca2b62e5eb sort preview version tags (#2015) 2026-07-10 11:26:02 +08:00
ekko ff206cecc4 unify frontend visual styles (#2014) 2026-07-10 11:23:27 +08:00
ekko 1dbc0aac2a Release Web UI 0.6.28 and improve MCU recovery (#2013)
* chore: release webui 0.6.28

* feat: improve mcu wifi reprovisioning

* feat: update mcu firmware recovery and tts segmentation
2026-07-10 10:43:52 +08:00
mo d81b0644cc fix: allow selecting models for scheduled jobs (#2009)
* fix: allow selecting models for scheduled jobs

* fix: avoid unsupported cron model flags

* fix: persist scheduled job model selection

* fix: resolve default provider/model in job list response

* fix: resolve custom provider name in job defaults

* docs: temp verification screenshot

* chore: remove temp verification screenshot

---------

Co-authored-by: 王.W <kingboyandgirl@users.noreply.github.com>
Co-authored-by: 王.W <wangw9475@agent.qq.com>
2026-07-10 08:55:37 +08:00
mo ac184a0e27 fix: keep new files in workspace diffs (#2008)
Co-authored-by: 王.W <kingboyandgirl@users.noreply.github.com>
2026-07-10 08:50:32 +08:00
mo 6b1967e4a6 fix: hide SQLite sidecars from workspace diffs (#2003)
* fix: hide sqlite sidecars from workspace diffs

* docs: note sqlite sidecar diff filtering

* fix: filter sqlite sidecars in git workspace diffs

---------

Co-authored-by: 王.W <kingboyandgirl@users.noreply.github.com>
Co-authored-by: ekko <fqsy1416@gmail.com>
2026-07-09 18:28:12 +08:00
Kagura bde8f2b0eb fix: write session ended_at/end_reason when bridge run terminates (#2004)
* fix: write session ended_at/end_reason when bridge run terminates (#1998)

When an agent run completes (normally or with error), the session's
ended_at and end_reason fields were never written to the database.
This caused the UI to permanently show 'thinking' for completed sessions.

Add updateSession calls at three run termination points:
- handleBridgeRun catch block (early error, empty queue)
- resumeBridgeRun catch block (stream error, empty queue)
- applyBridgeChunkAsync normal completion (no queued runs)

Each call is wrapped in try-catch to prevent masking the original
error or producing unhandled rejections.

Closes #1998

* fix: reopen bridge sessions when runs restart

---------

Co-authored-by: ekko <fqsy1416@gmail.com>
2026-07-09 12:41:28 +08:00
ekko f367515eb9 fix workflow approval rerun states (#2002) 2026-07-09 11:09:25 +08:00
ekko b7d282f59b add workflow node approval gates (#2001) 2026-07-09 10:40:34 +08:00
ekko cc21e0ba6a [codex] Fix session workspace file drawer (#1999)
* Fix session workspace file drawer

* Fix session workspace test mocks
2026-07-09 09:57:16 +08:00
mo 524cc0e306 fix: route workflow coding agent aborts correctly (#1995)
Co-authored-by: 王.W <wangw9475@agent.qq.com>
2026-07-09 08:44:57 +08:00
mo 9d047915f5 fix: inherit external MCP in scoped coding agents (#1983)
* fix: inherit external MCP in scoped coding agents

* fix: normalize inherited scoped MCP configs

* fix: collapse repeated codex mcp tables

---------

Co-authored-by: 王.W <kingboyandgirl@users.noreply.github.com>
2026-07-09 08:39:36 +08:00
Zhicheng Han 90b7a3c461 Persist group chat workspace diff runs (#1981) 2026-07-09 07:55:10 +08:00
ekko f5e831d0d0 Add MCU device management (#1994) 2026-07-08 16:40:11 +08:00
ekko a575266a84 [codex] require MCU API token for global agent events (#1991)
* require MCU API token for global agent events

* fix MCU relay auth tests
2026-07-08 12:37:47 +08:00
ekko a4173df72b skip empty workspace diff changes (#1986) 2026-07-08 09:33:15 +08:00
Zhicheng Han 904130de32 [codex] 拆分 Group Chat 房间工作区绑定 (#1980)
* Add group chat room workspace binding

* fix group chat workspace modal width

---------

Co-authored-by: ekko <fqsy1416@gmail.com>
2026-07-08 09:00:51 +08:00
ekko e42275640a [codex] Stabilize MCU voice relay and firmware (#1979)
* fix mcu voice stream recording

* tune mcu voice capture buffering

* decouple mcu voice capture upload

* stabilize remote mcu audio relay

* Overlap MCU speech preparation with playback

* Update ESP32-C3 release firmware

* Label remote MCU login as free test

* Buffer MCU TTS playback startup

* Reduce MCU voice stream chunk size

* Restore small MCU voice stream chunks

* Use balanced MCU voice stream chunks

* Restore strict MCU speech playback order

* Relax MCU voice stream queue backpressure

* Stabilize MCU voice stream recording

* stabilize mcu voice streaming

* use binary mcu voice stream chunks

* stabilize mcu tts playback

* pipeline mcu tts synthesis

* pipeline tts generation before playback

* fix mcu relay test and firmware status
2026-07-08 08:07:55 +08:00