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
chengyongru
a6b68178aa
fix(whatsapp): allow group ids in allowFrom ( #4834 )
2026-07-19 19:16:37 +08:00