Commit Graph
100 Commits
Author SHA1 Message Date
chengyongru bb34b58f47 refactor(agent): make memory summaries cumulative (#5610)
* refactor(agent): make memory summaries cumulative

Treat the latest session summary as a replacement checkpoint, preserve it through bounded raw fallbacks, and reserve history.jsonl for Dream ingestion.

* fix(agent): preserve cumulative checkpoint context

* fix(agent): preserve memory archive prompt cache

* refactor(agent): state archive prompt positively

* refactor(agent): remove checkpoint version migration

* refactor(agent): summarize full archive context

* test(agent): align cumulative archive prompt assertion

* refactor(agent): clarify memory checkpoint contract
2026-08-31 13:37:20 +08:00
chengyongru 6cd7063682 refactor(agent): defer transcript assembly to runner (#5608)
* refactor(agent): defer transcript assembly to runner

Keep persisted history and the fresh turn as explicit inputs until the Runner assembles the provider transcript. Preserve ContextBuilder and direct AgentRunner compatibility while making the save boundary structural.

Refs NAN-81.

* fix(providers): preserve mixed adjacent user content
2026-08-31 00:06:15 +08:00
chengyongru e73cce706c refactor(agent): extract tool execution boundary (#5569)
* refactor(agent): extract tool execution boundary

* test(agent): use extracted tool execution boundary
2026-08-28 13:52:03 +08:00
chengyongru cace42af14 refactor(memory): remove consolidation ratio (#5575)
* refactor(memory): remove consolidation ratio

* docs(memory): document fixed consolidation policy

* docs(memory): simplify consolidation overview

* docs(memory): rely on soft wrapping
2026-08-28 13:20:09 +08:00
chengyongru 29025f5a8b fix(agent): default request concurrency to unlimited (#5572)
* fix(agent): default request concurrency to unlimited

* test(agent): clarify session serialization coverage
2026-08-27 23:31:38 +08:00
chengyongru 3c61fef7e8 refactor(memory): decouple archival from provider state (#5565)
* refactor(memory): decouple archival from provider state

* test(memory): remove obsolete consolidation offset coverage
2026-08-27 21:21:15 +08:00
chengyongru 4d204ba077 feat(tui): support pasting clipboard images (#5563)
* feat(tui): support pasting clipboard images

* fix(tui): keep image placeholders atomic

* fix(tui): reconcile duplicate image placeholders

* fix(tui): retain highlighted image placeholders

* fix(tui): preserve image placeholder layout

* fix(tui): keep image display state local

* fix(tui): reject images in commands
2026-08-27 20:37:43 +08:00
chengyongru b9e7c7f6fe fix: queue concurrent subagents (#5566)
* fix: queue concurrent subagents

* chore: keep spawn schema concise
2026-08-27 17:53:28 +08:00
chengyongru 39de4594d7 refactor(agent): decouple loop from message tool state (#5559)
* refactor(agent): decouple loop from message tool state

* refactor(agent): scope message delivery tracking per run

* refactor(agent): clarify message delivery scope name
2026-08-27 17:23:16 +08:00
chengyongru 3a62b0b744 fix(tui): surface chat connection failures (#5543)
* fix(tui): surface chat connection failures

* fix(tui): keep connection copy implementation-agnostic

* test(tui): avoid millisecond timing boundary

* fix(tui): use gateway health for connection status

* fix(tui): use product-level readiness copy
2026-08-27 11:37:30 +08:00
chengyongru d8b4f612f2 fix(gateway): recover degraded WebSocket listener (#5544)
* fix(gateway): recover degraded WebSocket listener

* test(websocket): model listener readiness in startup stub

* fix(tui): keep launcher alive during gateway recovery

* test(websocket): colocate listener lifecycle coverage
2026-08-27 10:23:35 +08:00
chengyongru f9d449ef6c refactor(webui): isolate websocket application orchestration (#5548)
* refactor(webui): extract session attach projection

* refactor(webui): isolate websocket application orchestration

* refactor(webui): tighten websocket application boundary

* test(webui): assert module logger for fork failures
2026-08-26 18:04:38 +08:00
chengyongru 9d34fc5af2 refactor(agent): remove loop iteration state (#5549)
* refactor(agent): remove loop iteration state

* docs(my): remove stale iteration guidance
2026-08-26 15:57:47 +08:00
chengyongru 4f6c0aedfa refactor(agent): make run usage explicit (#5546)
* refactor(agent): make run usage explicit

* fix(api): capture usage per run
2026-08-26 15:18:53 +08:00
chengyongru 0c84725b13 fix(gateway): retry MCP readiness before turns (#5535) 2026-08-26 11:29:48 +08:00
chengyongru 42f37dc4c0 fix(provider): stabilize Codex prompt cache routing (#5540) 2026-08-26 01:36:00 +08:00
chengyongru 3ee3791626 refactor(tui): clarify active composer actions (#5538)
* fix(tui): queue busy submissions on Enter

* fix(tui): remove Tab queue shortcut

* refactor(tui): clarify active composer actions

* refactor(tui): simplify active composer hint
2026-08-26 00:46:31 +08:00
chengyongru 4b2965c8f3 feat: add demand-driven document retrieval (#5525) 2026-08-25 15:34:48 +08:00
chengyongru 5cf78540a4 fix(agent): wait for exec sessions without polling (#5526) 2026-08-25 14:46:02 +08:00
chengyongru 04974b7607 fix(webui): preserve causal message order (NAN-29) (#5503) 2026-08-24 15:08:22 +08:00
chengyongru 7f288a49fc fix(tui): preserve shell after Ctrl+C (#5502) 2026-08-24 14:32:48 +08:00
chengyongru 7604dc47f9 fix(webui): keep iOS PWA controls inside safe area (#5477)
* fix(webui): keep iOS PWA controls inside safe area

* fix(webui): blend iOS PWA chrome into dark canvas

* fix(webui): sync PWA chrome with app theme
2026-08-22 01:11:20 +08:00
chengyongru 26764f2423 feat(tui): add /detach command (#5461)
* feat(tui): add detach command

* fix(tui): print exact detached gateway stop command
2026-08-21 15:50:07 +08:00
chengyongru 221e8a4e4a feat(webui): polish sidebar and session transitions (#5393) 2026-08-14 17:03:11 +08:00
chengyongru e226242dfc fix(session): serialize canonical file access (#5383) 2026-08-14 10:32:17 +08:00
chengyongru 19997d20bb refactor: move MCP lifecycle out of AgentLoop (#5343) 2026-08-12 17:51:04 +08:00
chengyongru 4b5319b760 feat(webui): add tabbed pane workbench (#5322) 2026-08-12 14:45:12 +08:00
chengyongru d45c893f68 fix(webui): surface MCP runtime connection failures (#5331) 2026-08-11 23:52:02 +08:00
chengyongru 57d81bc1cd fix(providers): preserve nanobot tools with OpenRouter server tools (#5335)
* fix(providers): preserve functions with extra body tools

* docs(providers): clarify extra body tool merging
2026-08-11 18:23:27 +08:00
chengyongru 52e0a6a1e3 refactor(webui): split settings backend by domain (#5323) 2026-08-11 11:23:27 +08:00
chengyongru 8e77f3f8a4 feat(mcp): add browser OAuth for remote servers (#5316) 2026-08-10 23:44:37 +08:00
chengyongru c281e090d0 refactor(webui): make gateway own settings services (#5321) 2026-08-10 18:10:55 +08:00
chengyongru 85a452e5c7 refactor(agent): replace reflective runtime state access (#5319) 2026-08-10 16:44:26 +08:00
chengyongru 71a99b0780 fix(webui): improve UX recovery and empty states (#5315) 2026-08-10 15:22:25 +08:00
chengyongru 66316f21da docs: refresh WebUI user guidance (#5312) 2026-08-10 11:47:58 +08:00
chengyongru 55ecda275d test: strengthen user-path coverage and CI gates (#5308) 2026-08-09 21:37:06 +08:00
chengyongru 411d6061ae fix(webui): explain HTTPS requirement for voice input (#5304) 2026-08-09 21:17:57 +08:00
chengyongru 4e063f5695 fix(webui): prevent image hover clipping (#5294) 2026-08-08 18:05:00 +08:00
chengyongru 332c159b93 fix(weixin): harden protocol delivery, streaming, and login (#5263) 2026-08-07 16:53:31 +08:00
chengyongru ff6deda178 fix: modernize dependency recovery guidance (#5282) 2026-08-07 13:58:13 +08:00
chengyongru a95fd0ee82 perf(webui): reduce cold-start payload (#5262) 2026-08-06 13:24:34 +08:00
chengyongru 67805f5db8 feat: add provider-native request switches (#5254) 2026-08-05 18:26:39 +08:00
chengyongru 5a1ab44baa fix(whatsapp): detect outbound media content before dispatch (#5203) 2026-08-05 15:44:23 +08:00
chengyongru 9098ffd38f refactor(webui): improve visual consistency (#5249) 2026-08-05 13:24:45 +08:00
chengyongru 6e9ae5bd05 refactor(session): remove request-scoped access grants (#5238) 2026-08-05 10:18:46 +08:00
chengyongru 5770329542 fix(webui): render markdown in prompt rail previews (#5244) 2026-08-04 18:24:54 +08:00
chengyongru 287fd88fe4 fix(webui): refine inline token highlights (#5241) 2026-08-04 16:40:41 +08:00
chengyongru 2fe135db3e feat(webui): add integrated Vite dev mode (#5239) 2026-08-04 16:14:32 +08:00
chengyongru 4e8702a47b fix(anthropic): support Opus 5 effort controls (#5236) 2026-08-04 13:38:54 +08:00
chengyongru f11710a578 fix(webui): show actual local trigger messages (#5228) 2026-08-03 16:43:01 +08:00
chengyongru 580824a15a perf(webui): accelerate JSONL session list and thread loading (#5194) 2026-08-03 09:51:35 +08:00
chengyongru cdb75f8e7d feat(providers): support DeepSeek Responses API (#5197) 2026-08-01 11:53:51 +08:00
chengyongru 971b977a84 fix(weixin): recover refreshed state after session expiry (#5196) 2026-08-01 00:28:21 +08:00
chengyongru 172fe4f991 fix(webui): preserve user scroll ownership near tail (#5193) 2026-07-31 23:37:26 +08:00
chengyongru 6a1a45d07a feat: preserve Responses reasoning state and compact context (#5172) 2026-07-30 22:39:43 +08:00
chengyongru 606ac56e8f feat(webui): support remote Codex OAuth login (#5174) 2026-07-30 15:06:34 +08:00
chengyongru e2563e2e74 refactor(cli): split commands into focused modules (#5175) 2026-07-30 15:01:35 +08:00
chengyongru ad6900e56c refactor(session): separate persistence behind SessionStore (#5170) 2026-07-30 11:51:13 +08:00
chengyongru c33c188afb fix(session): preserve history during idle compaction (#5167) 2026-07-30 10:45:45 +08:00
chengyongru 11fcd9cc5f fix(webui): prevent redundant thread and media reloads (#5164) 2026-07-30 10:25:22 +08:00
chengyongru 129b74b4cf feat(webui): track optimistic message delivery status (#5162) 2026-07-29 23:15:45 +08:00
chengyongru 757ad9c764 refactor: enforce BasedPyright strict type checking (#5158) 2026-07-29 21:37:11 +08:00
e703481755 fix(memory): expose media references to session consolidation (#5157)
Co-authored-by: shakewingo <yaoyingshakewin@gmail.com>
Co-authored-by: bingqilinweimaotai <111987281+bingqilinweimaotai@users.noreply.github.com>
2026-07-29 15:18:44 +08:00
chengyongru 393d429e0a fix(ci): stabilize and speed up CI (#5145) 2026-07-28 22:55:59 +08:00
chengyongru 019d7816a7 fix(webui): animate reasoning drawer transitions (#5143) 2026-07-28 19:13:16 +08:00
chengyongru 24a392b671 fix(webui): open threads at latest message (#5142) 2026-07-28 18:52:34 +08:00
chengyongru 0c6c0438d4 feat(config): add actionable startup diagnostics and WebUI recovery (#5110) 2026-07-28 18:52:05 +08:00
chengyongru 76ab04ac48 fix(webui): keep streaming tail visible (#5140) 2026-07-28 18:18:44 +08:00
chengyongru 12f828ea3d fix(agent): read document attachments on demand (#5122) 2026-07-28 13:33:06 +08:00
chengyongru ef9e687f19 refactor(core): remove redundant runtime scaffolding (#5127) 2026-07-28 11:07:58 +08:00
chengyongru 4c77126b3d docs: improve README landing page 2026-07-28 01:48:34 +08:00
chengyongru 6bc454dab4 fix(webui): prevent composer resize scroll jitter (#5121) 2026-07-28 01:01:49 +08:00
chengyongru f78ad59ed0 fix(memory): preserve Dream input integrity (#5114) 2026-07-27 21:37:13 +08:00
chengyongru c13df29457 feat(memory): restore Dream model preset override (#5107) 2026-07-27 14:43:25 +08:00
chengyongru 281b4b7f0b chore: remove expired v0.3.1 compatibility shims (#5106) 2026-07-27 13:53:04 +08:00
chengyongru ee93725e83 fix(webui): restore file edit diff display (#5096) 2026-07-26 19:05:53 +08:00
chengyongru b0ef759e2c Smooth WebUI streaming with state-driven viewport motion (#4696) 2026-07-26 00:18:24 +08:00
chengyongru 6e0eb46705 feat: launch first-time setup in webui (#5078) 2026-07-24 21:16:43 +08:00
chengyongru d3e4b35f2b fix(webui): honor custom gateway port with Vite (#5076) 2026-07-24 18:40:09 +08:00
chengyongru 5be176a6a0 feat(webui): switch model presets from the composer (#5077) 2026-07-24 17:34:26 +08:00
chengyongru 9aab94c766 Revert "fix: preserve pending message runtime context"
This reverts commit cad368f585.
2026-07-24 14:47:50 +08:00
chengyongru 9957de5226 fix(webui): show quoted context after follow-up send (#5071) 2026-07-24 14:19:33 +08:00
chengyongru aae259c790 feat(webui): simplify model preset settings (#5061) 2026-07-24 00:55:06 +08:00
chengyongru 4b1547db7d style(webui): unify settings and dark mode surfaces (#5058) 2026-07-23 17:47:20 +08:00
chengyongru 96eb965aae feat(webui): show the actual fallback model (#5017) 2026-07-23 15:57:13 +08:00
chengyongru 01cdfc8100 fix(telegram): expose proxy setup in WebUI (#5033) 2026-07-23 14:18:49 +08:00
chengyongru 9cf2fb19c2 feat(xai): surface hosted X Search activity (#5050) 2026-07-23 13:42:09 +08:00
chengyongru c7393c785e feat(providers): add xAI Grok OAuth with capability-gated X Search (#5035) 2026-07-23 11:55:16 +08:00
chengyongru c22efb5f7a feat(agent): make model presets session-scoped (#4866) 2026-07-23 00:38:49 +08:00
chengyongru 66690fdb0c fix(webui): deliver late subagent results as new turns (#4992) 2026-07-22 23:04:36 +08:00
chengyongru b189a37648 fix(agent): preserve agent-owned state in project workspaces (#4945) 2026-07-22 17:25:22 +08:00
chengyongru 254497c02e fix(webui): improve mobile composer layout (#5030) 2026-07-22 14:59:56 +08:00
chengyongru 96abb4d2c4 style(webui): clarify surface hierarchy (#5029) 2026-07-22 14:33:58 +08:00
chengyongru 63bc6e98a7 fix(webui): detect Chrome voice recording support (#5027) 2026-07-22 14:10:09 +08:00
chengyongru 3748f664b2 feat(config): watch runtime configuration changes (#5026) 2026-07-22 13:08:39 +08:00
chengyongru 7bf7469d90 feat(webui): show pin indicators for pinned chats (#5025) 2026-07-22 11:47:45 +08:00
chengyongru 9db0d9f3c9 refactor(agent): unify internal turn lifecycle (#4993) 2026-07-21 00:14:27 +08:00
chengyongru 8423cf3eeb fix(channels): complete dependency manifest migration (#4995)
* fix(channels): complete dependency manifest migration

* docs(docker): clarify custom uid dependency installs

* fix(channels): keep dependency preinstall internal

* refactor(channels): move dependency installer to scripts

* fix(docker): limit runtime write access
2026-07-20 15:24:57 +08:00
chengyongru 76f3eead42 style(webui): simplify Markdown code blocks (#5002) 2026-07-20 14:41:23 +08:00
chengyongru 462a0dfb0f refactor(channels): make built-in channels self-contained (#4908)
* refactor(channels): own setup and instance contracts

* refactor(channels): isolate management contracts

* refactor(channels): normalize activation contracts

* fix(channels): enforce management contracts

* refactor(channels): finish setup ownership migration

* fix(channels): harden management contracts

* fix(channels): enforce lazy loading and runtime ownership

* fix(feishu): make multi-instance startup idempotent

* fix(webui): render channel setup contracts cleanly

* fix(feishu): stop websocket clients cleanly

* fix(channels): enforce persistence and activation gates

* fix(channels): preserve global feature action scope

* fix(channels): apply defaults for single plugins

* fix(channels): enforce management contract boundaries

* refactor(feishu): remove identity helper indirection

* fix(channels): preserve management setup contracts

* refactor(channels): generalize instance settings UI

* refactor(channels): package channel plugins with web UI metadata

* refactor(channels): make built-ins self-contained packages

* test(channels): colocate tests with channel packages

* fix(dingtalk): use official brand icon

* feat(channels): colocate webui translations

* docs(channels): clarify plugin ownership

* test(exec): remove output wait race

* refactor(channels): unify plugin descriptors

* fix(channels): enforce descriptor-owned contracts

* refactor(channels): finish package-owned plugin setup

* refactor(channels): use repository-owned packages only

* fix(channels): self-describe dependencies and runtime state

* fix(channels): warn about legacy entry points
2026-07-19 23:30:49 +08:00